gpt4 book ai didi

java - JTable 单元格不反射(reflect)更改,但可编辑

转载 作者:行者123 更新时间:2023-12-02 08:28:20 25 4
gpt4 key购买 nike

对于自定义 TableModel,我重写了 isCellEditable,它始终返回 true。

我也重写了setValueAt,但不知道如何使用该方法,以便JTable反射(reflect)编辑所做的更改。

下面是 PersonTableModel 的修改代码:-

class PersonTableModel extends AbstractTableModel{

public int getRowCount(){
return 10 ;
}

public int getColumnCount(){
return 1 ;
}

public String getColumnName(int c){
return "Name" ;
}

public Object getValueAt(int r, int c){
return "Person " + ++r ;
}

public boolean isCellEditable(int rowIndex, int columnIndex) {
return true ;
}

public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
//what goes here
}
}

问候,里茨

<小时/>

编辑:

根据表单成员的建议,下面是我使用 PersonTableModel 的代码:-

public class CustomTableModel{

@SuppressWarnings("deprecation")
public static void main(String[] args){
JFrame frame = new PersonFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE) ;
frame.show();
}
}

class PersonFrame extends JFrame{

@SuppressWarnings("deprecation")
public PersonFrame(){
setTitle("PersonTable");
setSize(600, 300);

TableModel model = new PersonTableModel() ;
JTable table = new JTable(model);

getContentPane().add(new JScrollPane(table), "Center") ;
show() ;
}
}

最佳答案

扩展DefaultTableModel,然后只需要重写isCellEditable(...)方法。除了其他有用的方法之外,默认表模型还实现了 setValueAt() 方法。

如果您确实想知道 setValueAt(...) 方法中发生了什么,请查看 DefaultTableModel 的源代码,了解 setValueAt() 如何通过调用适当的 fireXXX 方法来通知 View 模型已更改.

关于java - JTable 单元格不反射(reflect)更改,但可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4009900/

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