gpt4 book ai didi

java - 如何在for循环JTable中的所有行上获取复选框?

转载 作者:行者123 更新时间:2023-12-01 20:08:19 26 4
gpt4 key购买 nike

我已经成功在 Eclipse 中创建了一个表。该表包含已编号的行。这是代码:

public class JTableRowHeader {

private JFrame frame = new JFrame("JTable RowHeader");
private JScrollPane scrollPane;
private JTable table;
private DefaultTableModel model;
private TableRowSorter<TableModel> sorter;
private JTable headerTable;
private JCheckBox chckbxNewCheckBox; // declared check box
private JCheckBox all;
//private List<JCheckBox> checkBoxes;


public JTableRowHeader() {
int NoOfRows = 60;
table = new JTable(NoOfRows, 2);
for (int i = 0; i < table.getRowCount(); i++) {
table.setValueAt(i, i, 0);
}
sorter = new TableRowSorter<TableModel>(table.getModel());
table.setRowSorter(sorter);
model = new DefaultTableModel() {

};



table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {

@Override
public void valueChanged(ListSelectionEvent e) {
model.fireTableRowsUpdated(0, model.getRowCount() - 1);
}
});
scrollPane = new JScrollPane(table);
scrollPane.setRowHeaderView(headerTable);
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.getContentPane().add(scrollPane);

chckbxNewCheckBox = new JCheckBox("New check box");
scrollPane.setColumnHeaderView(chckbxNewCheckBox);
frame.pack();
frame.setLocation(150, 150);
frame.setVisible(true);
}

public static void main(String[] args) {
try {
for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if (info.getName().equals("Nimbus")) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e) {
//e.printStackTrace();
}
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
JTableRowHeader TestTableRowHeader = new JTableRowHeader();
frame.add(new CheckBoxGroup(); //trying to add the check box
}
});
}
}

现在我已经创建了表,我希望为表中的所有行添加一个复选框。我还希望当我更改表中的行数时复选框会发生变化,例如如果我有 4 行,我需要 4 个复选框,如果我将其增加到 60 行,我需要 60 个复选框。我尝试过几次但都失败了。我对此相当陌生,因此任何使用我的代码的帮助将不胜感激。

最佳答案

阅读 Swing 教程中关于 How to Use Tables 的部分了解帮助您入门的基础知识和工作示例。

关键是:

  1. 您需要重写 DefaultTableModel 的 getColumnClass(...) 方法,以返回带有组合框的列的 Boolean.class。

  2. 然后在设置数据的循环中,您需要将数据添加到 TableModel。

所以代码会是这样的:

table.setValueAt(i, i, 0);
table.setValueAt(Boolean.FALSE, I, 1); // add the check box

I want to do it without the Object[ ] method

是的,这是更好的方法。您永远不应该创建具有固定大小的 TableModel。创建包含 0 行的表,然后只需使用 addRow(...) 方法即可让表随着添加数据行而动态增长。

这比使用 setValueAt(...) 更好。

关于java - 如何在for循环JTable中的所有行上获取复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47074639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com