这是我的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);
地图填写在正在工作的按钮按下。但是,在单击按钮之前或之后,表格不会出现。每次调整gui窗口时我都会收到错误。
我粗略地了解了修复它需要做些什么,但它还没有解决。
答案 0 :(得分:1)
尝试移动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);
}
});
}