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

标签 java swing user-interface jtable abstracttablemodel

这是我的 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/

相关文章:

html - target=_blank 还是不target=_blank,这是个问题!

java - 无法在数组交集中从列表转换为数组

java - 使用 Java 的 ImageIO 将像素数组转换为 Image 对象?

java - 如何使 Jfreechart 中的鼠标滚轮缩放(setMouseWheelEnabled())仅影响特定轴?

java - 如何从另一个 GUI 类调用一个 GUI 类?

user-interface - 什么是 UI 状态?

java - 如何将字段索引为建议类型?

java - 在多个服务器上执行 ScheduledExecutorService

java - 如何在 Netbeans 中隐藏 jButton 事件方法

java - 向 JFrame 和所有子组件添加监听器