Java 如何将复选框添加到JTABLE swing

Java 如何将复选框添加到JTABLE swing,java,swing,jtable,jcheckbox,Java,Swing,Jtable,Jcheckbox,有人知道如何在JTable列中放置JCheckBox?大概是这样的: 这是我从你那里拿的 提前感谢。1)知道默认情况下使用内置布尔值,然后有相反的声明 2) 应该很有用,其中位于JTable中,需要减少/限制/更改嵌套和继承默认在DefaultTableModel中实现的方法 < P > 3)考虑使用 Debug TababMuldel[/Cuff] >(如果您不确定如何工作),而不是 ActucTababMuldE/ 可以从简单代码生成: import javax.swing.*; im

有人知道如何在
JTable
列中放置
JCheckBox
?大概是这样的:

这是我从你那里拿的

提前感谢。

1)知道默认情况下使用内置布尔值,然后有相反的声明

2) 应该很有用,其中位于
JTable
中,需要减少/限制/更改嵌套和继承默认在
DefaultTableModel
中实现的方法

< P > 3)考虑使用<代码> Debug TababMuldel[/Cuff] >(如果您不确定如何工作),而不是<代码> ActucTababMuldE/<代码>

可以从简单代码生成:

import javax.swing.*;
import javax.swing.table.*;

public class TableCheckBox extends JFrame {

    private static final long serialVersionUID = 1L;
    private JTable table;

    public TableCheckBox() {
        Object[] columnNames = {"Type", "Company", "Shares", "Price", "Boolean"};
        Object[][] data = {
            {"Buy", "IBM", new Integer(1000), new Double(80.50), false},
            {"Sell", "MicroSoft", new Integer(2000), new Double(6.25), true},
            {"Sell", "Apple", new Integer(3000), new Double(7.35), true},
            {"Buy", "Nortel", new Integer(4000), new Double(20.00), false}
        };
        DefaultTableModel model = new DefaultTableModel(data, columnNames);
        table = new JTable(model) {

            private static final long serialVersionUID = 1L;

            /*@Override
            public Class getColumnClass(int column) {
            return getValueAt(0, column).getClass();
            }*/
            @Override
            public Class getColumnClass(int column) {
                switch (column) {
                    case 0:
                        return String.class;
                    case 1:
                        return String.class;
                    case 2:
                        return Integer.class;
                    case 3:
                        return Double.class;
                    default:
                        return Boolean.class;
                }
            }
        };
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        JScrollPane scrollPane = new JScrollPane(table);
        getContentPane().add(scrollPane);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                TableCheckBox frame = new TableCheckBox();
                frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
                frame.pack();
                frame.setLocation(150, 150);
                frame.setVisible(true);
            }
        });
    }
}

Swing教程将确切地告诉您如何做这样的事情。我建议您看看。您可以在创建表之后获得“复选框”列,然后以类似的方式
setCellEditor(layersTable.getDefaultEditor(Boolean.class))
和单元格渲染器。PS.我很抱歉这是一个关闭的问题,我无法回答,这是一个快速回答的完美问题:(-1对于数据相关原因的子类化表:显然模型有责任返回正确的类,视图不能猜测1)我从未听说过子类化问题,严重不理解,在这里发布一个很好的例子,或者链接到详细的订阅,可能是澄清动力的适当方式,2)可能有最深刻的原因,为什么我只在swift级别为OP屏蔽非子类代码,3)映像::-)默认的
JTable#getColumnClass
方法会这样做:
返回getModel().getColumnClass(convertColumnIndexToModel(column))。如果用户移动表列,此“解决方案”将中断
TableModel#getColumnClass
应该被重写。你的代码被无耻地复制了。我已经就那张海报的行为给版主打了标记。