1

JTable にチェックボックスを追加します。選択した JCheckBox 行の特定のセルの値を取得したいです。チェックボックス コードを追加するのは次のようなものです。

JCheckBox checkBox = new javax.swing.JCheckBox();
jTable1 = new javax.swing.JTable();

jTable1.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {    },
new String [] {
    "Station", "OperationName", "TliScantime", "StartTime", "Completedtime", "TliScanTime-StartTime", "StartTime-CompletedTime", "Select"
}
) {
Class[] types = new Class [] {
    java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Boolean.class
};

public Class getColumnClass(int columnIndex) {
    return types [columnIndex];
}
});
jTable1.getColumn("Select").setCellEditor(new DefaultCellEditor(checkBox));

ネットビーンズで。

JTable の JCheckBox のセルをクリックするために addListSelectionListener を使用します。

 jTable1.getSelectionModel().addListSelectionListener(new javax.swing.event.ListSelectionListener() {
                    public void valueChanged(ListSelectionEvent event ) {
                   // if(jTable1.getValueAt(0,7).equals(true)){
                       Object b=jTable1.getValueAt(0,7);

                       System.out.println(b); 
                   //}    

                }
            }); 

最初に null が出力され、その後値が 2 回出力される理由がわかりません。

4

2 に答える 2

2

カスタム エディターを作成して割り当てる必要はありません。getColumnClass(,..)JTable は、メソッドから返されたクラスに基づいて、適切なレンダラーとエディターを返します。データにはチェックボックスが自動的に使用されBooleanます。

ListSelectionListener は 2 つのイベントを発生させます。1 つは前に選択された行の選択解除用で、もう 1 つは現在の行の選択用です。

于 2011-08-03T20:03:49.647 に答える
1

セルをクリックする前は、そのフィールドの値はnullです(サンプルコードでテーブルにコンテンツを設定していません)

セルのチェックボックスをオンにすると、チェックボックスで設定された明示的な true 値が表示されます。

もう一度クリックすると、明示的に設定された null 値があり、チェックボックスによって設定されます。

于 2011-08-03T18:44:32.487 に答える