【问题标题】:checkbox on jtable and getting values of corresponding rows in java swingjtable上的复选框并在java swing中获取相应行的值
【发布时间】:2011-10-19 09:04:54
【问题描述】:

我在 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));

在 netbeans 中。

我使用 addListSelectionListener 来点击 JTable 的 JCheckBox 的单元格。

 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 次值。

【问题讨论】:

    标签: java swing jtable jcheckbox


    【解决方案1】:

    无需创建和分配自定义编辑器。 JTable 将根据getColumnClass(,..) 方法返回的类返回适当的渲染器和编辑器。复选框自动用于Boolean 数据。

    ListSelectionListener 触发两个事件,一个用于取消选择先前选择的行,另一个用于选择当前行。

    【讨论】:

      【解决方案2】:

      在单击任何单元格之前,该字段中的值为 null(我没有看到您在示例代码中为表格设置任何内容)

      选中单元格中的复选框后,它现在将具有复选框设置的显式真值。

      再次点击后,它将有一个明确设置的空值,由复选框设置。

      【讨论】:

        猜你喜欢
        • 2012-11-07
        • 1970-01-01
        • 2014-06-18
        • 2018-05-08
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 2013-04-04
        • 1970-01-01
        相关资源
        最近更新 更多