1

テーブルがあり、同じ列インデックスの各行にコンボボックスがあります。問題は、コンボボックスで値を選択するときに、各行に同じ値を設定しようとすることです。テーブルセルエディターのコンボボックスに関する以前の質問を読み、コードに回答を実装しようとしましたが、管理できませんでした。私が望むものを見ることができますが、私のアクションリスナーは背後に多くの例外を送信しました. 修正方法は?

このテーブルのコード

        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);
 }
    }

これからもよろしくお願いします。

4

1 に答える 1

1

私は本当にばかです。答えが非常に単純な場合もありますが、私たちは常に問題を大きく見ています。

ActionListener comboBoxAction = new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            System.out.println("period clicked.");
            int row=tblRadars.getSelectedRow();
                        int comboboxColumn=3 ;
            String selectedvalue=comboBox.getSelectedItem().toString();
            for(int i=0;i<tblRadars.getRowCount();i++){

                tblRadars.setValueAt(selectedvalue, i, comboboxColumn);

            }



            ((DefaultTableModel)tblRadars.getModel()).fireTableDataChanged();
        }
    };

次に、このアクションをコンボボックス アクション リスナーに追加します。:)

于 2013-01-24T17:19:36.293 に答える