2016-10-06 3 views
2

私はJTableを持っています。そこにはJCheckBoxesがいくつかあります。私はJCheckBoxesと他のセルの値をデータベースから初期化しています。私の問題は、JCheckBoxをクリックしてチェックしたりチェックを外しても、何もしないことです。Java SwingアプリケーションのJTableセル内で編集可能なチェックボックスを正しく設定する方法は?

2回クリックすると、編集可能なJTableセルがアクティブになり、JCheckBoxの値が0または1になります。セルを0または1で編集できます。保存すると、レコードが保存され、編集された値。私はisCellEditable以下オーバーライド私のrenderTable方法で

class TextBoxNewCellRenderer extends JPanel implements TableCellRenderer { 

::: 
public Component getTableCellRendererComponent(

case 10: //Active 
       switch (column) { 
        case 0: 
         this.add(lblStar); 
         this.add(new JLabel(value.toString(), JLabel.LEFT)); 
         break; 
        case 1: 
         checkBox = new JCheckBox(); 
         checkBox.setToolTipText("Set 0 OR 1"); 
         checkBox.setEnabled(true); 
         if(value.toString().equals("1")) 
          checkBox.setSelected(true); 
         if(value.toString().equals("0")) 
          checkBox.setSelected(false); 
         this.add(checkBox); 
         break; 
::: 

return this; 
    } 
} 

:スニペット私はロードしJCheckBoxesを作成していますどのように表示するには、次の

私はクリックを倍増するとき

DefaultTableModel model = new DefaultTableModel() { 
      @Override 
      public boolean isCellEditable(int row, int column) { 

        switch (row){ 
         case 10: //Active 
         switch (column) { 
          case 0: 
           return false; 
          case 1: 
           return true; 
          case 2: 
           return false; 
          case 3: 
           return false; 
          default: 
           return false; 
         } 
        default: 
       return false; 
       } 
      } 
     }; 

は、ここでのJTableの写真ですon JCheckBoxe:

enter image description here

JCheckBoxをワンクリックでチェックしたり、チェックを外したりできますか? JTableのセルを0または1で更新してチェックしたり、チェックを外したりしたくない。助けてください。

乾杯。

+1

問題を完全かつ迅速に理解するには、[最小限のサンプルプログラム](http://stackoverflow.com/help/mcve)を作成して投稿する必要があります。あなたの問題を実証するのに必要なコードだけがあり、コピー、貼り付け、コンパイル、変更なしで実行できるプログラムです。 –

答えて

2

私は二回クリックすると、編集可能なJTableのセルがアクティブになり、0または1

あるJCheckBoxの値を示していますが、デフォルトのレンダラ/エディタは、次に使用したい場合は、する必要がありますBoolean.TRUEまたはBoolean.FALSETableModelに格納します。

の方法を無効にしてTableModelBoolean.classを返す必要があります。

詳細と動作例については、How to Use TablesのSwingチュートリアルのセクションをお読みください。

+0

ご返信ありがとうございます。ご覧のとおり、私は行と列のインデックスを指定する必要があるテーブルを使って作業しています。 getColumnClass()は、columnだけをパラメータとして取ります。私のシナリオに似た作業サンプルがありますか?事前に束をありがとう。乾杯。 –

+0

@SadequerRahman、JTableは各行の同じデータ用に設計されています。あなたの質問に表示されるフォームにJTableを使用しないでください。 JLabels、JCheckbox、およびJTextFieldを使用してパネルを作成するだけです。おそらく、あなたは4行2列のJTableを作成して "データを有効にする"ことができます。同じ列の異なるデータで実際にプレイしたい場合は、このリンクでいくつかのアイデアを得ることができます:http://stackoverflow.com/questions/33216409/class-specific-renderer-component-not-called/33218124#33218124 – camickr

関連する問題