Java 使用GridBagLayout JTables和JScrollPane don';行不通

Java 使用GridBagLayout JTables和JScrollPane don';行不通,java,swing,jtable,jscrollpane,gridbaglayout,Java,Swing,Jtable,Jscrollpane,Gridbaglayout,使用GridBagLayout,我尝试创建一个表,当我这样做时,它会创建一个没有标题行的表,所以我添加了一个JScrollPane。问题是JScrollPane会导致标题显示,但所有其他行都不会显示 Object rowData[][] = { { "1", "Row1-Column2"}, { "2", "Row2-Column2"} }; Object columnNames[] = { "#", "Column Two"};

使用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);

我认为基本代码没有问题,只是不应该硬编码组件的首选大小

而不是使用:

//fScrollpane.setPreferredSize(new Dimension(500, 110));
尝试使用:

forms.setPreferredScrollableViewportSize(forms.getPreferredSize());
如果这没有帮助,那么发布一个适当的说明问题的帖子