Add a title to a JTable

前端 未结 4 1318
醉酒成梦
醉酒成梦 2021-01-19 07:48

I have a JTable which is created using a TableModel JTable t = new JTable(tableModel) I want to add a title to it. I was hoping for something like t.setTi

相关标签:
4条回答
  • 2021-01-19 08:05

    You would have to add it when you instantiate your 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);
    

    If it already exists, you can do something like this:

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

    Courtesy of RoseIndia.net

    Hope that helps.

    0 讨论(0)
  • 2021-01-19 08:06

    You can also add your title the JScrollPane which inscribes jtable in it.

    Code:

    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setBorder(BorderFactory.createTitledBorder ("Table Title"));
    
    0 讨论(0)
  • 2021-01-19 08:12

    I don't think you have much options here. JTable has no functionality to add a titlebar. So using JLabel or other components is your only option. Try putting the JTable in a JTabbedPane.

    0 讨论(0)
  • 2021-01-19 08:17

    Another option you could consider is enclosing the JTable in a JPanel and setting a TitledBorder to that JPanel.

    Like this:

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

    It looks like this:

    screenshot1

    0 讨论(0)
提交回复
热议问题