【问题标题】:How to make only one checkbox ticked in JTable?如何在 JTable 中只勾选一个复选框?
【发布时间】:2016-12-02 15:53:33
【问题描述】:

我有一个 5 列和 20 行的 JTable。标题是Name、ID、Present、Absent、Late。

我想限制用户勾选所有 3 个框,因为这显然没有意义。

这样做的最简单方法是什么,例如,如果勾选了present,然后勾选了absent,则当前值将变为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();
 }

【问题讨论】:

  • 请向我们展示您的代码...
  • 您可以为每个复选框添加一个动作监听器,也可以将单选按钮与组一起使用(也可以与复选框一起使用)
  • 这不是一个简单的问题,首先需要设置您的模型,以便它只允许选择一行数据中的三个项目中的一个。然后你需要创建适当的渲染器和编辑器。
  • 将三列合并为一列,并使用组合框作为编辑器,有3个值可供选择。
  • 对于example。

标签: java arrays swing jtable tablemodel


【解决方案1】:

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

【讨论】:

  • (1-) 该链接与 Swing 无关。 JTable 中的数据列不是真正的组件。您不能只将数据视为单选按钮。
猜你喜欢
  • 1970-01-01
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
  • 2013-11-08
  • 1970-01-01
  • 2020-09-09
  • 2012-11-07
  • 2018-08-10
相关资源
最近更新 更多