繁体   English   中英

JTable不添加标题行

[英]JTable doesn't add header row

我尝试将标题行添加到我的JTable ,然后在面板上放置下一个表。
这是我的示例代码:

Map <String, Float> tmpCart = new HashMap<String , Float>();
    MainPanel.removeAll();
    MainPanel.repaint();
    tmpCart = cart.GetMap();
        DefaultTableModel tab = new DefaultTableModel();
        tab.setColumnIdentifiers(new String[] {"Name", "Price"});
            for (String key : tmpCart.keySet())
            tab.addRow(new Object[] {key, tmpCart.get(key)});
        JTable jTab = new JTable(tab);
        jTab.setBounds(10, 10, 200, 200);
        jTab.setBackground(Color.orange);
        jTab.setRowHeight(25);
        JScrollPane pan =new JScrollPane(jTab);
         MainPanel.add(pan);
        // MainPanel.add(jTab);
       // pan.repaint(); 

如何正确编写?

//回答

我尝试动态创建JTable ,按下按钮后,我想从Hashtable获取数据,创建表并将此表放在面板上。

第一步是从面板中删除所有组件,然后使用Hashmap中的数据创建JTable

功能齐全:

private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {                                           
Map <String, Float> tmpCart = new HashMap<String , Float>();
MainPanel.removeAll();
MainPanel.repaint();
tmpCart = cart.GetMap();
    DefaultTableModel tab = new DefaultTableModel();
    tab.setColumnIdentifiers(new String[] {"Name", "Price"});
        for (String key : tmpCart.keySet())
        tab.addRow(new Object[] {key, tmpCart.get(key)});
    JTable jTab = new JTable(tab);
    jTab.setBounds(10, 10, 200, 200);
    jTab.setBackground(Color.orange);
    jTab.setRowHeight(25);

    // MainPanel.add(pan);
     MainPanel.add(jTab);            

}

该代码可以工作,创建表并将其放置在面板上,但不会在第一行设置列名(文本:“名称”和“价格”)。

从代码示例中无法准确判断出您在做什么。

如果您尝试在可见的GUI上动态更新表,则无需创建新表,只需重置TableModel。

table.setModel( model );

如果您需要更多帮助,请发布可证明问题的SSCCE

编辑:

第一步是从面板上删除所有组件,

为什么要从面板上卸下组件?

如果需要“交换”面板,请使用CardLayout。

如果您需要“刷新”现有组件,则只需如上所述重置模型即可。

// MainPanel.add(pan);
MainPanel.add(jTab);               

应该将scrollPane添加到GUI,而不是表。

表头是另一个组件,只有在表位于JScrollPane内时才会自动添加。 最好的选择是通过创建一个JScrollPane

new JScrollPane(table)

并将其添加到您的MainPanel中。

另一种选择是将标头直接添加到所需的任何位置,为此您可以执行以下操作:

panel.add(table.getTableHeader())

尝试将其放入JScrollPane中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM