如何在JTable中只勾选一个复选框?

时间:2016-12-02 15:53:33

标签: java arrays swing jtable tablemodel

我有一个包含5列和20行的JTable。标头为NameIDPresentAbsentLate

我想限制用户能够勾选所有3个框,显然这是没有意义的。

这样做的最简单方法是,如果例如勾选了当前,则勾选缺席,当前值将变为false。

这是我的代码的基本版本。大声笑,请忽略它是多么糟糕,我是一个相当新的编程。

JPanel classRegPanel = new JPanel(null); //layout

Object data[][]= new Object[10][5];  
String columns[]={"Name","ID","Present", "Absent", "Late"};  

DefaultTableModel model = new DefaultTableModel(data, columns) {

boolean[] canEdit = new boolean[]{
                false, false, true, true,true
        };

        public boolean isCellEditable(int rowIndex, int columnIndex) {
            return canEdit[columnIndex];
        }

@Override
public Class<?> getColumnClass(int columnIndex)
{
    return columnClass[columnIndex];
}};

JTable table=new JTable(model);  

JScrollPane scrollPane=new JScrollPane(table);    

final Class[] columnClass = new Class[] 
{
String.class, Integer.class, Boolean.class, Boolean.class,Boolean.class
};


public void Setup()
 {
this.setLayout(new FlowLayout());
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    

this.add(scrollPane);

this.setTitle("Register");
this.setSize(500,380);
this.setVisible(true);
this.setResizable(false);
 }

public static void main(String[] args )
 {
    ClassRegister cr = new ClassRegister();
    cr.Setup();
 }

1 个答案:

答案 0 :(得分:0)

复选框允许按设计进行多项选择。如果你一次只想要一个seelcted,使用单选按钮而不是复选框,这正是它们的用途。 见:http://www.w3schools.com/html/tryit.asp?filename=tryhtml_form_radio