首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果jtable中的相应复选框被选中,我如何获取另一个单元格的值?

如果jtable中的相应复选框被选中,我如何获取另一个单元格的值?
EN

Stack Overflow用户
提问于 2011-08-05 01:53:50
回答 2查看 2.2K关注 0票数 0

如果在JTable中选中了相应JCheckBox的复选框,如何获取其他单元格的值。我在JTable中添加了JCheckbox:

代码语言:javascript
运行
复制
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));
jTable1.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_OFF);
jTable1.getColumnModel().getColumn(0).setPreferredWidth(120);
jTable1.getColumnModel().getColumn(1).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(2).setPreferredWidth(80);
jTable1.getColumnModel().getColumn(3).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(4).setPreferredWidth(100);
jTable1.getColumnModel().getColumn(5).setPreferredWidth(180);
jTable1.getColumnModel().getColumn(6).setPreferredWidth(180);

jScrollPane1.setViewportView(jTable1);

现在我想这样做,当有人单击JCheckbox时,它将从TliScanTime-StartTime中获取值,StartTime-CompletedTime列表示选中JCheckbox时的值。

它将显示两个分离的JLables中TliScanTime-StartTimeStartTime-CompletedTime的平均时间。值将动态更改,这意味着每次单击复选框时,平均时间都会更改。我在创建的每个行上都添加了一个复选框。

对一些编码示例有什么帮助呢?

EN

回答 2

Stack Overflow用户

发布于 2011-08-05 02:10:53

您也许能够适应here所示的方法。

票数 1
EN

Stack Overflow用户

发布于 2011-08-05 05:28:11

对于JTable,您必须实现TableModelListener

例如,

代码语言:javascript
运行
复制
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

public class TableCheckboxListenerExample {

    public static void main(String[] args) {
        try {
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
            DefaultTableModel model = new DefaultTableModel(new Object[][] {
                        {Boolean.FALSE, "Row 1"},
                        {Boolean.TRUE, "Row 2"}},
                    new String[]{"col1", "col2"}) {

                private static final long serialVersionUID = 1L;

                @Override
                public Class<?> getColumnClass(int columnIndex) {
                    if (getRowCount() > 0 && getValueAt(0, columnIndex) != null) {
                        return getValueAt(0, columnIndex).getClass();
                    }
                    return super.getColumnClass(columnIndex);
                }
            };
            model.addTableModelListener(new TableModelListener() {

                @Override
                public void tableChanged(TableModelEvent e) {
                    int row = e.getFirstRow();
                    int column = e.getColumn();
                    TableModel model = (TableModel) e.getSource();
                    Object data = model.getValueAt(row, column);
                    if (data instanceof Boolean) {
                        System.out.println("Value changed in Row: " + row + " Column: " + column + " New Value = " + data);
                    }
                }
            });
            JTable table = new JTable(model);
            frame.add(new JScrollPane(table));
            frame.pack();
            frame.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private TableCheckboxListenerExample() {
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6946205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档