2011-09-28 80 views
1

我嘗試將標題行添加到我的JTable,然後將其放在面板上。
這是我的示例代碼: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);    

}

此代碼,創建表,並把它在面板上,但沒有設置第一行的列名(文本:「名稱」和「價格」)。

+0

請改變你的'JTree的不添加header'排至'JTable中不添加標題行或'JTreeTable不添加標題行' – mKorbel

+2

您還沒有發佈SSCCE! – camickr

+2

請學習java命名約定並堅持使用它們 – kleopatra

回答

3

無法準確地從代碼示例中判斷出您正在做什麼。

如果您嘗試動態更新可見GUI上的表,則不需要創建新表,只需重置TableModel即可。

table.setModel(model); 

如果您需要更多幫助,請發佈您的SSCCE來證明問題。

編輯:

第一步是要從面板的所有組件,

從面板爲什麼你刪除組件?

如果您需要「交換」面板,然後使用CardLayout。

如果您需要「刷新」現有組件,那麼只需重新設置模型,如上所述。

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

scrollPane應該被添加到GUI,而不是表格。

1

嘗試將其放入JScrollPane中。

2

表頭是另一個組件,只有當表格位於JScrollPane中時纔會自動添加。您最好的選擇是通過

new JScrollPane(table) 

創建一個JScrollPane並將其添加到您的MainPanel。

的另一種選擇是附加的標題直接你需要的地方,併爲你可以這樣做:

panel.add(table.getTableHeader())