Question

I am making a JTable and I am having 2 problems. #1 the table headers are showing up on the side of the table and #2 the scroll pane isn't showing up. This is some of my code right now.

String [] data = {"a", "b", "c", "d", "e"};
JFrame frame = new JFrame("String Table");
JPanel middlePanel = new JPanel();              
DefaultTableModel model = new DefaultTableModel();
model.addColumn("String", data);
JTable table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);    


frame.getContentPane().add(middlePanel, BorderLayout.CENTER);
middlePanel.add(scrollPane);
middlePanel.add(table.getTableHeader());
middlePanel.add(table);


frame.setSize(400, 200);
frame.setVisible(true);
Was it helpful?

Solution

  1. use only code line middlePanel.add(scrollPane);

  2. JPanel (middlePanel) should be layed by GridLayout or BorderLayout

  3. remove code lines middlePanel.add(table.getTableHeader()); and middlePanel.add(table);

  4. move code line frame.getContentPane().add(middlePanel, BorderLayout.CENTER); after middlePanel.add(scrollPane);, and could be frame.add(middlePanel); if isn't changed LayoutManager for JFrame

  5. remove frame.setSize(400, 200); replace with frame.pack() and to determine proper PreferredSize by override getPreferredSize for JScrollPane

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top