0

我正在尝试使用一些任意值创建一个简单的可滚动 JTable,并将其放置在 JPanel 中。我遇到了一些奇怪的结果,其中 JTable 出现但只显示列名并且似乎压扁了剩余的行。表格也出现在面板的中心,我希望它位于顶部。

        // Panel to hold our layer information
        JPanel layerPanel = new JPanel(new GridBagLayout());
        layerPanel.setBackground(Color.LIGHT_GRAY);
        layerPanel.setPreferredSize(new Dimension(200, 200));

        GridBagConstraints c = new GridBagConstraints();
        c.insets = new Insets(0,5,0,5);
        c.weightx = 1; c.weighty = 0.0;
        c.fill = GridBagConstraints.BOTH;
        c.gridx = 0; c.gridy = 0;

        String[] columns = { "Show", "Layer" };
        Object[][] data = {{"x", "Layer1"},
                           {"x", "Layer2"}};

        // Construct our table to hold our list of layers
        JTable layerTable = new JTable(data, columns);
        layerTable.getColumnModel().getColumn(0).setPreferredWidth(64);

        layerPanel.add(new JScrollPane(layerTable), c);
        frame.add(layerPanel);

链接到结果照片

任何帮助表示赞赏,当我使用 GridLayout(1,0) 而不是使用 GridBagLayout 时,代码可以工作,所以我觉得我用错了。

感谢您的时间。

4

2 回答 2

5

您没有在 Y 轴上设置任何“权重”,因此您JscrollPane不会在该轴上扩展。你可以使用:

c.weighty = 1;

解决这个问题。

于 2012-09-02T20:38:38.510 回答
3

尝试设置GridBagConstraints.weighty为 1

c.weighty=1;
于 2012-09-02T20:44:19.033 回答