[英]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);
}
该代码可以工作,创建表并将其放置在面板上,但不会在第一行设置列名(文本:“名称”和“价格”)。
表头是另一个组件,只有在表位于JScrollPane内时才会自动添加。 最好的选择是通过创建一个JScrollPane
new JScrollPane(table)
并将其添加到您的MainPanel中。
另一种选择是将标头直接添加到所需的任何位置,为此您可以执行以下操作:
panel.add(table.getTableHeader())
尝试将其放入JScrollPane中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.