2

上に JTable を持つマスター/詳細フォームがあり、JPanel の下に対応するすべての JTextFields があります。正しい行が選択されたときに、すべての JTextField に列の値を入力できるように、JTable で検索を行おうとしています。行をプログラムで呼び出す方法がわかりません。それはどのように行われますか?

これは、検索を行うために使用しているコードです。

int rows = (masterTable.getModel()).getRowCount();
final int colCedula = 1; //columna de la CEDULA
final int colRuc = 11; //columna de RUC
String value = null ;
for(int i=0; i
value = (String) (masterTable.getModel()).getValueAt(i, colCedula);
if (value.equals(this.txt_BuscaCliente.getText())) {
    //CODE FOR FILLING JTEXTFIELDS
}

検索で列の値が見つかってループが停止した場合、//CODEセクションの masterTable.getSelectedRow() に記述してから、すべての JTextField にその列の値を入力できますか?

また、選択した行をプログラムで強調表示するにはどうすればよいですか? 検索で列の値が見つかった後、その行を JTable で強調表示するとします。

4

1 に答える 1

2

リスト選択イベントを理解するために、チュートリアル記事「テーブルの使用方法: ユーザー選択」の例から始めます。モデルがあれば、SINGLE_SELECTION検索する必要はありません。選択した行のテキスト フィールドに入力するだけです。または、テーブル モデルでセルを編集可能にすることもできます。コピーする必要はまったくありません。

補遺:

また、選択した行をプログラムで強調表示するにはどうすればよいですか?

検索する代わりに、ユーザーがどのような選択を行ったかを の実装で知らListSelectionListenerせてください。引用されたでは、以下に示すように を変更して、選択した行の列を反復処理します。RowListener

private class RowListener implements ListSelectionListener {

    @Override
    public void valueChanged(ListSelectionEvent event) {
        if (!event.getValueIsAdjusting()) {
            for (int c : table.getSelectedRows()) {
                int row = table.convertRowIndexToModel(c);
                TableModel model = table.getModel();
                for (int col = 0; col < model.getRowCount(); col++) {
                    System.out.println(model.getValueAt(row, col));
                }
                System.out.println();
            }
        }
    }
}
于 2010-09-12T23:45:44.303 に答える