gpt4 book ai didi

java - 使 JTable 单元格不可编辑

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:30:55 26 4
gpt4 key购买 nike

我试图在用户双击时使 JTable 的所有单元格都不可编辑。我已经阅读了很多论坛帖子,普遍的共识是创建一个新的表模型类,扩展 DefaultTableModel 然后覆盖方法 isCellEditable(int row, int column)。我做了所有这些,现在当我运行我的程序(小程序)时,单元格中没有任何显示。 注意 这个学期我有一个教授认为 applet 还没有过时......

表格模型代码:

public class MyTableModel extends DefaultTableModel
{
public boolean isCellEditable(int row, int column) //override isCellEditable
//PRE: row > 0, column > 0
//POST: FCTVAL == false always
{
return false;
}
}

Code in my class: **NOTE** this class extends JPanel

private JScrollPane storesPane;
private JTable storesTable;

Code in the Constructor:

storesTable = new JTable(tableData, COL_NAMES); //tableData and COL_NAMES are passed in
storesTable.setModel(new MyTableModel());

storesPane = new JScrollPane(storesTable);
storesTable.setFillsViewportHeight(true);
add(storesPane, BorderLayout.CENTER);

希望你们中的一些 Java 专家能发现我的错误:)

最佳答案

此行创建一个新的 JTable 并在幕后隐式创建一个 DefaultTableModel,它包含 JTable 所需的所有正确数据:

storesTable = new JTable(tableData, COL_NAMES);

这一行有效地删除了上面隐式创建的表模型,即保存所有表数据的表模型并将其替换为不包含任何数据的表模型:

storesTable.setModel(new MyTableModel());

您需要为您的 MyTableModel 类提供一个构造函数,并在该构造函数中调用 super 构造函数并将您当前传递给其构造函数中的表的数据传递。

例如,

public class MyTableModel extends DefaultTableModel {

public MyTableModel(Object[][] tableData, Object[] colNames) {
super(tableData, colNames);
}

public boolean isCellEditable(int row, int column) {
return false;
}
}

然后你可以像这样使用它:

MyTableModel model = new MyTableModel(tableData, COL_NAMES);
storesTable = new JTable(model);

关于java - 使 JTable 单元格不可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8372799/

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