0

セルにJComboBoxがあるJTableを作成しようとしています。私はcelleditorを使用できることを知っていますが、トリックは、各行のコンボボックスに異なる情報が必要なことです。テーブルの各行はオブジェクトを表します。そのオブジェクトには配列リストがあり、コンボボックスに必要な配列リストのコンテンツです。これが私のこれまでの思考プロセスです。

table = new JTable(tableModel);
tableModel = new DefaultTableModel();
forestTable.setModel(tableModelForest);
tmpColum = forestTable.getColumnModel().getColumn(5);
tmpColum.setCellEditor(new DefaultCellEditor(comboBox));
comboBox = new JComboBox<Tree> ();
comboBox.setEditable(false);

後で(ボタンを押して)メソッドを呼び出すときに、coloum 5に一意のコンボボックスを含む新しい行を挿入したいのですが、どうすればよいかわかりません。試してみました。

public void fillTable(String text){
    tableModel.insertRow(tableModel.getRowCount(), "" } );
    tableModel.fireTableRowsInserted(
    tableModel.getRowCount(),
    tableModel.getRowCount());

    comboBox.addItem(text);

}

4

1 に答える 1

2

それでも適切な方法は、セル エディターを使用することです。

tmpColum.setCellEditor(new DefaultCellEditor(comboBox) {
    @Override
    public Component getTableCellEditorComponent(JTable table,
                                         Object value,
                                         boolean isSelected,
                                         int row,
                                         int column) {
        JComboBox comboBox = (JComboBox)super.getTableCellEditorComponent(
            table, value, isSelected, row, column);
        // stuff the combobox with values and selection.
        ComboBoxModel cbmodel = getMyCBModel(row); // Or (ComboBoxModel)value
        comboBox.setModel(cbmodel);
        // Or:
        if (value == null)
            comboBox.setSelectedIndex(-1);
        else
            comboBox.setSelectedItem(value);
        return comboBox;
    }
});
于 2013-03-06T10:39:45.133 に答える