为JTable添加标题

时间:2012-03-02 12:12:16

标签: java swing jtable

我有一个使用TableModel创建的JTable JTable t = new JTable(tableModel)我想为它添加一个标题。我希望有类似t.setTitle(graphTitle);之类的东西,但我无法找到这方面的任何内容。如果标题位于表格的顶部或下方,我不介意。 我使用的是JLabel,但它看起来很乱。

有人可以帮忙吗? 提前干杯

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);

如果它已经存在,你可以这样做:

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);
}

RoseIndia.net提供

希望有所帮助。

答案 2 :(得分:0)

我认为你没有太多选择。 JTable没有添加标题栏的功能。 因此,使用JLabel或其他组件是您唯一的选择。 尝试将JTable放在JTabbedPane中。

答案 3 :(得分:0)

您还可以将标题添加到JScrollPane中,其中包含jtable。

<强>代码:

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