2012-03-14 14 views
0

私はJTableのセルエディタとしてJComboBoxを使用しています。 ComboBoxのドロップダウンリストから値の1つを選択すると、setValueAtが呼び出されません。私は関数をオーバーライドしているので、これを知っています。このセルで選択された値に基づいて、同じテーブルの別のセルの値が固定されます。また、このイベントのどれがactionListenerであるかを知る必要があります。つまり、ComboBoxの値を変更するときです。JTableでセルエディタとしてJComboBoxを使用して変更を保存する

setValueAtは、テーブル内の別のセルにフォーカスが変更されたときにのみ呼び出されます。テーブルの外側をクリックするだけでも役立ちません。

@Override 
public void setValueAt(Object o,int row,int col) 
{ 
    super.setValueAt(o, row, col); 

    if(((String)o).matches("1")) 
    { 
     super.setValueAt(o, col-1, row+1); 
     return; 
    } 

    if(((String)o).contains("/")) 
     super.setValueAt(((String)o).substring(2), col-1, row+1); 
    else 
     super.setValueAt("1/"+(String)o, col-1, row+1); 
} 

答えて

1

私はちょうど私が私がcellEditorをクラスのメンバーとして作成するJComboBoxコンポーネントにActionListenerを追加する必要があり、リスナー関数では、私はstopCellEditingを呼び出す必要があります...

を方法を見つけましたsetValueAtが呼び出されるようにします。

関連する問題