【问题标题】:JTable doesn't add header rowJTable 不添加标题行
【发布时间】:2011-09-28 17:14:31
【问题描述】:

我尝试将标题行添加到我的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);            

}

此代码有效,创建表格并将其放在面板上,但没有设置第一行的列名(文本:“名称”和“价格”)。

【问题讨论】:

  • 请将您的JTree doesn't add header 行更改为JTable doesn't add header rowJTreeTable doesn't add header row
  • 你还没有发布SSCCE!
  • 请学习java命名约定并遵守它们
  • 永远不要在应用程序代码中调用 setBounds - 而是使用 layoutManager

标签: java swing jtree header-row


【解决方案1】:

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

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

table.setModel( model );

如果您需要更多帮助,请发布您的 SSCCE 来说明问题。

编辑:

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

为什么要从面板中移除组件?

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

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

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

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

【讨论】:

    【解决方案2】:

    表头是另一个组件,仅当表位于 JScrollPane 内时才会自动添加。您最好的选择是通过

    创建一个 JScrollPane
    new JScrollPane(table)
    

    并将其添加到您的 MainPanel。

    另一种选择是将标题直接添加到您想要的任何位置,为此您可以这样做:

    panel.add(table.getTableHeader())
    

    【讨论】:

      【解决方案3】:

      尝试将其放入 JScrollPane。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-21
        相关资源
        最近更新 更多