2010-02-26 60 views
2

我在NetBeans中使用了JTable GUI組件。爲JTable創建多行標題

  • 我想創建多行標頭

  • 我能夠這樣,當我創建表頭

  • 自定義渲染,但我不希望,因爲我喜歡默認的一個(我在程序的其他地方使用它)。

  • 所以問題是:如何使 標題heigher?

我的代碼:

String headers[] = new String[3]; 
    headers[0] = "Header1"; 
    headers[1] = "Header2"; 
    headers[2] = "<html><center>Long<br>Centered</br></center></html>"; 
    DefaultTableModel dtm = new DefaultTableModel(); 
    dtm.setColumnIdentifiers(headers); 
    dtm.setRowCount(5); 
    jTable1.setModel(dtm); 
    jTable1.getTableHeader().setPreferredSize(
       new Dimension(jTable1.getColumnModel().getTotalColumnWidth(),32)); 
+1

沒關係,我再次更新我的答案:)檢查它看起來像現在的預期。 –

回答

5

嘗試以下操作:

table.getTableHeader().setPreferredSize(
     new Dimension(table.getColumnModel().getTotalColumnWidth(), 32)); 

這將改變頭的大小:

alt text http://img96.imageshack.us/img96/7544/so2343391.png

居中文本,您可以使用<center> - 標籤:

headers[2] = "<html><center>Long Centered<br>Header"; 

alt text http://img710.imageshack.us/img710/705/so23436532.png

編輯

比對通過您的LookAndFeel設置。 WindowsTableHeaderUI例如明確要求

setHorizontalAlignment(LEADING); 

解決這個最簡單的方法是:

(JLabel)table.getTableHeader().getDefaultRenderer()) 
     .setHorizontalAlignment(SwingConstants.CENTER); 

注意,當你改變你的LookAndFeel後來這個更改將丟失。

+0

偉大的,這是我需要的。 但是,我現在有一個相當麻煩的中心文本標題... 有沒有什麼機會,你知道如何? – miso

+0

HTML

標籤不會幫助... SwingConstants.CENTER可以,但我會againg需要爲標題創建自己的渲染器:/ – miso

+0

我想'center'和它的工作:' 「



」'。你有這樣的嘗試嗎? –

1

嗨,大家好我想這和它的作品:

DefaultTableCellRenderer r; 

    String headers[] = new String[3]; 
    headers[0] = "Category"; 
    headers[1] = "Item"; 
    headers[2] = "<html><center>Packaging<br>unit</center></br></html>"; 
    DefaultTableModel dtm = new DefaultTableModel(); 
    table.setModel(dtm); 
    r = (DefaultTableCellRenderer)table.getTableHeader().getDefaultRenderer(); 
    r.setHorizontalAlignment(JLabel.CENTER); 
    dtm.setColumnIdentifiers(headers); 

    table.getTableHeader().setPreferredSize(new Dimension(table.getColumnModel().getTotalColumnWidth(),32));