2012-03-02 70 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"));