JTable column header not visible

后端 未结 4 1017
予麋鹿
予麋鹿 2021-01-07 16:48

column header not visible in my JTable i have created a JPanel and added the JTable to the JPanel.

Object rowData[][] = { { \"Row1-Column1\", \"Row1-Column2\         


        
相关标签:
4条回答
  • 2021-01-07 17:25

    Best JTable Example (Working smoothly just paste in editor and execute as Java application) with dynamic data :

    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    public class TableTest {
    
    private JFrame frame;
    private JTable table;
    
    /**
     * Launch the application.
    */
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                TableTest window = new TableTest();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
    }
    
    /**
     * Create the application.
     */
    public TableTest() {
    initialize();
    }
    
    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
    frame = new JFrame();
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);
    
    table = new JTable();
    
    DefaultTableModel daDefaultTableModel = new DefaultTableModel(0, 0);
    
    String[] columnNames = new String[] {"Column Header1", "Column Header2", "Column 
    Header3"};
    
    daDefaultTableModel.setColumnIdentifiers(columnNames);
    
    //Dummy data for Table
    daDefaultTableModel.addRow(new Object[] {"Test1","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test2","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test3","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test4","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test5","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test6","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test7","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test8","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test9","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test10","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test11","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test12","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test13","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test14","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test15","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test16","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test17","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test18","Test2","Test3"});
    daDefaultTableModel.addRow(new Object[] {"Test19","Test2","Test3"});
    
    table.setModel(daDefaultTableModel);
    
    JScrollPane scrollPane = new JScrollPane(table);
    scrollPane.setBounds(10, 38, 414, 212);
    frame.getContentPane().add(scrollPane);
    
    
    
      }
    }
    
    0 讨论(0)
  • 2021-01-07 17:28

    The API for JTable states:

    "Note that if you wish to use a JTable in a standalone view (outside of a JScrollPane) and want the header displayed, you can get it using getTableHeader() and display it separately."

    Or just add the table to a scrollpane, and add your scrollpane to the panel...

    0 讨论(0)
  • 2021-01-07 17:35

    Here's how to add a header to a JTable without using a JScrollPane:

    int rows = 21;
    int cols = 3;
    JTable table = new JTable(rows, cols);
    JTableHeader header = table.getTableHeader();
    JPanel panel = new JPanel();
    panel.setLayout(new BorderLayout());
    panel.add(header, BorderLayout.NORTH);
    panel.add(table, BorderLayout.CENTER);
    
    0 讨论(0)
  • 2021-01-07 17:40

    You can add following code into your code

    DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
    renderer.setPreferredSize(new Dimension(0, 0));
    table.getTableHeader().setDefaultRenderer(renderer);
    
    0 讨论(0)
提交回复
热议问题