使用GridBagLayout,我尝试创建一个表,当我这样做时,它会创建一个没有标题行的表,所以我添加了一个JScrollPane。问题是JScrollPane导致标题显示,但所有其他行都不显示。
Object rowData[][] = { { "1", "Row1-Column2"},
{ "2", "Row2-Column2"} };
Object columnNames[] = { "#", "Column Two"};
forms = new JTable(rowData, columnNames);
forms.getColumnModel().getColumn(0).setPreferredWidth(27);
forms.getColumnModel().getColumn(1).setPreferredWidth(450);
forms.getColumnModel().getColumn(0).setResizable(false);
forms.getColumnModel().getColumn(1).setResizable(false);
forms.putClientProperty("JTable.autoStartsEdit", Boolean.FALSE);
JScrollPane fScrollpane = new JScrollPane(forms, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
fScrollpane.setPreferredSize(new Dimension(500, 110));
c.fill = GridBagConstraints.HORIZONTAL;
c.gridx = 0;
c.gridy = 2;
c.gridwidth = 2;
pane.add(fScrollpane, c);
答案 0 :(得分:2)
我没有看到基本代码有问题,除非你不应该硬编码组件的首选大小。
而不是使用:
//fScrollpane.setPreferredSize(new Dimension(500, 110));
尝试使用:
forms.setPreferredScrollableViewportSize(forms.getPreferredSize());
如果这没有帮助,请发布一个显示问题的正确SSCCE。