2012-03-02 105 views
2

我有一個使用TableModel創建的JTable我想爲它添加標題。我希望有像t.setTitle(graphTitle);這樣的東西,但我無法找到任何東西。我不介意標題是位於桌面還是桌子下方。 我正在使用JLabels,但它看起來很亂。向JTable添加標題

任何人都可以幫忙嗎? 提前喝彩

+0

將裝有JTable中JScrollPane的上述一個JLabel看起來像我的最好和最簡單的解決方案。它爲什麼看起來凌亂? – 2012-03-02 12:18:03

回答

11

您可以考慮的另一個選擇是將JTable包含在JPanel中,並將TitledBorder設置爲JPanel

像這樣:

import javax.swing.*; 
import javax.swing.border.TitledBorder; 

public class TableTitle 
{ 
    public TableTitle() 
    { 
     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation (JFrame.DISPOSE_ON_CLOSE); 

     JPanel panel = new JPanel(); 
     panel.setBorder (BorderFactory.createTitledBorder (BorderFactory.createEtchedBorder(), 
                  "Table Title", 
                  TitledBorder.CENTER, 
                  TitledBorder.TOP)); 


     JTable table = new JTable (3, 3); 

     panel.add (table); 

     frame.add (panel); 

     frame.setLocationRelativeTo (null); 
     frame.pack(); 
     frame.setVisible (true); 
    } 

    public static void main (String[] args) 
    { 
     SwingUtilities.invokeLater (new Runnable() 
     { 
      @Override public void run() 
      { 
       TableTitle t = new TableTitle(); 
      } 
     }); 
    } 
} 

它看起來像這樣:

screenshot1

+2

請學習java命名約定並堅持使用它們 – kleopatra 2012-03-02 12:59:24

+0

@kleopatra我沒有真正關注這一點。想讓程序工作:)。 – 2012-03-02 14:14:53

+2

基礎知識應該是正確的,而不需要關注它們;-)或換句話說:請編輯您的示例 – kleopatra 2012-03-02 14:18:32

0

我不認爲你在這裏有太多的選擇。 JTable沒有添加標題欄的功能。 所以使用JLabel或其他組件是您唯一的選擇。 嘗試將JTable放入JTabbedPane中。

2

你將不得不當你實例化你的DefaultTableModel,將其添加:

String data[][] = {{"Vinod","MCA","Computer"}, 
{"Deepak","PGDCA","History"}, 
{"Ranjan","M.SC.","Biology"}, 
{"Radha","BCA","Computer"}}; 

String col[] = {"Name","Course","Subject"}; 

DefaultTableModel model = new DefaultTableModel(data,col); 
table = new JTable(model); 

如果它已經存在,你可以做這樣的事情:

禮貌的 RoseIndia.net

ChangeName(table,0,"Stu_name"); 
ChangeName(table,2,"Paper"); 

public void ChangeName(JTable table, int col_index, String col_name){ 
    table.getColumnModel().getColumn(col_index).setHeaderValue(col_name); 
} 

希望這有助於。

+0

請學習java命名約定並堅持使用它 – kleopatra 2012-03-02 13:00:10

+1

這不是OP所要求的(這是_table_標題,而不是_column_標題 – kleopatra 2012-03-02 13:03:06

0

您還可以添加標題這是銘刻JTable中JScrollPane的。

代碼:

JScrollPane scrollPane = new JScrollPane(table); 
scrollPane.setBorder(BorderFactory.createTitledBorder ("Table Title"));