1

JTableのセルにコンボボックスを追加したいと思います。

model=new DefaultTableModel(data,col);
JTableHeader head=new JTableHeader();
head.setBackground(Color.BLUE);
table=new JTable(model);
table.add(head);
JComboBox combo = new JComboBox();
combo.addItem("Names");
combo.addItem("Antony");
combo.addItem("Victor");
combo.addItem("Ramkumar");
table.add(combo);

しかし、私はセルにコンボボックスを入れることができません。コンボボックスを設定することはできますか?

4

3 に答える 3

3

JTableのTableCellEditorを設定する必要があります。Javaチュートリアルを検索することをお勧めしますが、ここに簡単な説明があります。

JTableは、次の3つの主要なクラスを使用して機能します。

1)TableModel:テーブルの行と列の数を指定し、テーブルのデータを提供する機能です。主なメソッドはgetValue(row、col)とsetValue(value、row、col)です。そして、JTableの再描画を通知するイベントを起動します。

2)TableCellRenderer:JTableのセルにコンポーネントを描画することが主な目的です。このコンポーネントは塗装されているだけです:動作しません!JComboBoxを描画した場合、それをクリックしても枯渇しません。また、JCheckboxを描画した場合、選択/選択解除されません。

3)TableCellEditor:主な目的は、JTableCell内にコンポーネントを描画して、セルの値を編集することです。イベントを受け取り、いつ編集を開始するかを決定します。次に、getTableCellEditorComponentメソッドが呼び出されてエディターコンポーネントが返されます。返されたコンポーネントは、TableCellEditorが編集を停止して値を取得し、それを使用してTableModel.setvalue ...を呼び出すか、編集をキャンセルするタイミングを認識できるように、イベントを起動する必要があります。

そのため、JTableでJComboBoxを表示するには、独自のTableCellEditorを作成する必要があります。これまでに作成したことがない場合は、簡単な作業ではありません。

于 2010-03-30T09:11:11.573 に答える
2

この Javaチュートリアルを見て、このページで「コンボボックスをエディターとして使用する」を検索してください。

于 2010-03-30T07:59:12.087 に答える
0

これを試してみてください:それは私のために働いています..セルをクリックしてコンボボックスを表示します。

 private void comboloader() {
        try {
            TableColumn gradeColumn = jTable1.getColumnModel().getColumn(0);
            JComboBox comboBox = new JComboBox();

            comboBox.removeAllItems();

            try {
                comboBox.addItem("Item 1");
                comboBox.addItem("Item 2");
                comboBox.addItem("Item 3");

            } catch (NullPointerException e) {
            } catch (Exception e) {
                e.printStackTrace();
            }
            gradeColumn.setCellEditor(new DefaultCellEditor(comboBox));
        } catch (Exception e) {
        }
    }
于 2013-08-03T09:46:45.547 に答える