0

この形式で内容を表示する JTable があります。

Part Number    Quantity   Price
SD1131            7       1,000
SD6534            6       2,000

同じフレームに JTextfield(txtNo) があります。ユーザーが JTextfield に部品番号を入力すると、対応するレコードが JTable で選択されるようにする必要があります。これまでのところ、次のような行番号に基づいてレコードを選択することしかできませんでした:

txtNo.addFocusListener(new FocusAdapter() {
            public void focusLost(FocusEvent e) {

                int index1 = 0;
                int index2 = 0;
                try {
                    index1 = Integer.valueOf(txtNo.getText());
                    tbStore.setRowSelectionInterval(index2, index1);
                } catch (Exception ae) {
                    ae.printStackTrace();
                }
            }
        });

JTextfield の入力に基づいて JTable 行を選択する同じメソッドを実装するにはどうすればよいですか?

4

2 に答える 2

4

部品番号がテキストフィールドに入力された部品番号と等しいアイテムをテーブルで見つける必要があります。実行する手順:

  • テキストフィールドの内容を読む
  • で一致する要素のインデックスを検索しますTableModel
  • JTableメソッドを使用して、そのインデックスを対応する行インデックスに変換しますconvertRowIndexToView(並べ替え、フィルタリングなどを考慮に入れるため)
  • setRowSelectionIntervalの方法を使用して、JTableその行を選択します

JXTable別の方法として、検索機能が組み込まれているSwingXプロジェクトのを使用することもできます。JXTableSwingXライブラリには、そのような(JXSearchPanelおよびを参照JXSearchField)を検索できるコンポーネントも含まれています。

于 2012-10-08T08:43:20.147 に答える
2

TableModel を調べて、探している部品番号が含まれている行を見つける必要があります。

for(int i=0;i<tbStore.getRowCount();i++) {

    // 0 is for the column Part number
    if(tbStore.getValueAt(i, 0).equals(Integer.valueOf(txtNo.getText())) {
        tbStore.setRowSelectionInterval(i, i);
        break;
    }
}

警告: このコードはまだテストしていませんが、少なくとも基本的な考え方は理解できるはずです。

于 2012-10-08T08:39:41.063 に答える