使用GridBagLayout JTables和JScrollPane不起作用

时间:2014-06-16 14:54:29

标签: java swing jtable jscrollpane gridbaglayout

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

1 个答案:

答案 0 :(得分:2)

我没有看到基本代码有问题,除非你不应该硬编码组件的首选大小。

而不是使用:

//fScrollpane.setPreferredSize(new Dimension(500, 110));

尝试使用:

forms.setPreferredScrollableViewportSize(forms.getPreferredSize());

如果这没有帮助,请发布一个显示问题的正确SSCCE