gpt4 book ai didi

java - 使用 JTable 和 JModel 时遇到问题

转载 作者:行者123 更新时间:2023-12-01 14:14:16 24 4
gpt4 key购买 nike

这是我的 ClanModel 类。该表基于树形图。

public class ClanModel extends AbstractTableModel{
private Map<Integer, ClanMember> clanMembers;
private final String[] columnNames = {"Name", "Rank"};

ClanModel(Map<Integer, ClanMember> clanMembers){
this.clanMembers = clanMembers;
}

@Override
public int getRowCount() {
return clanMembers.size();
}

@Override
public int getColumnCount() {
return 2;
}

@Override
public String getColumnName(int column){
return columnNames[column];
}

@Override
public Object getValueAt(int row, int column) {
if(column == 0) return clanMembers.get(row).getName();
if(column == 1) return clanMembers.get(row).getRank();
return 1;
}

@Override
public void setValueAt(Object value, int row, int column) {
if(column == 0) clanMembers.get(row).setName((String) value);
if(column == 1) clanMembers.get(row).setRank((Rank) value);
fireTableCellUpdated(row, column);
}
}

这是在 gui 构造函数中

clanTable = new JTable(new ClanModel(clanMembers));
panel.add(clanTable);

按一下有效的按钮即可填充 map 。但是,在单击该按钮之前或之后,该表不会出现。每次调整 gui 窗口大小时我也会收到错误。

我大致知道需要做什么来修复它,但尚未解决。

最佳答案

尝试移动 setVisible(),使其位于 add()pack()之后。另请参阅Initial Threads .

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {

@Override
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTable table = new JTable(new ClanModel(…));
f.add(new JScrollPane(table));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
});
}

关于java - 使用 JTable 和 JModel 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18261321/

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