Java JTable和JModel有问题
这是我的模型课。该表基于树映射Java JTable和JModel有问题,java,swing,user-interface,jtable,abstracttablemodel,Java,Swing,User Interface,Jtable,Abstracttablemodel,这是我的模型课。该表基于树映射 public class ClanModel extends AbstractTableModel{ private Map<Integer, ClanMember> clanMembers; private final String[] columnNames = {"Name", "Rank"}; ClanModel(Map<Integer, ClanMember> clanMembers){
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窗口的大小时,我都会遇到一个错误
我大致知道需要做什么来修复它,但还没有解决。尝试移动
setVisible()
,使其位于add()
和pack()
之后。另见
我没有看到
invokeLater()
或setVisible()
。请编辑您的问题,以包含一个显示您描述的问题的问题。调整GUI大小时会出现什么错误?另外,容器
中是否添加了JTable
,在您的窗口
中?他可能没有收到错误;必须调整帧大小以获得隐式的repaint()
可能是由于错误的setVisible()
造成的。
clanTable = new JTable(new ClanModel(clanMembers));
panel.add(clanTable);
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);
}
});
}