0

这是我的 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 窗口大小时,我也会收到错误消息。

我对修复它需要做些什么有一个粗略的想法,但它一直没有解决。

4

1 回答 1

1

尝试移动setVisible(),使其 add()和之后pack()。另请参见初始线程

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);
        }
    });
}
于 2013-08-15T22:49:11.883 回答