テーブルがあり、同じ列インデックスの各行にコンボボックスがあります。問題は、コンボボックスで値を選択するときに、各行に同じ値を設定しようとすることです。テーブルセルエディターのコンボボックスに関する以前の質問を読み、コードに回答を実装しようとしましたが、管理できませんでした。私が望むものを見ることができますが、私のアクションリスナーは背後に多くの例外を送信しました. 修正方法は?
このテーブルのコード
tblRadars= new JTable();
tblRadars.setModel(new DefaultTableModel(
new Object[][] {},
new String[] {
"Radar", "Multicast IP", "Port", "Period", "Size", "Start", "Stop"
}
) {
/**
*
*/
private static final long serialVersionUID = 1L;
boolean[] columnEditables = new boolean[] {
false, false, false, true, false, true, true};
public boolean isCellEditable(int row, int column) {
if (column == PERIOD_COLUMN_INDEX ){
return ((JButton)getValueAt(row, START_COLUMN_INDEX)).isEnabled();
}
return columnEditables[column];
}
});
TableColumn periodColumn = tblRadars.getColumnModel().getColumn(3);
final JComboBox comboBox = new JComboBox(new Object[]{"1 min","30 min","1 hr" , "2 hr","4 hr","6 hr", "12 hr"});
comboBox.setSelectedIndex(-1);
DefaultCellEditor ed=new DefaultCellEditor(comboBox);
periodColumn.setCellEditor(ed);
私の面白いアクションリスナーは
ed.addCellEditorListener(new CellEditorListener() {
@Override
public void editingStopped(ChangeEvent e) {
// TODO Auto-generated method stub
String value=(String)tblRadars.getValueAt(tblRadars.getSelectedRow(), PERIOD_COLUMN_INDEX);
int row=tblRadars.getRowCount();
for(int i=0;i<row;i++){
tblRadars.setValueAt(value, i, PERIOD_COLUMN_INDEX);
}
}
これからもよろしくお願いします。