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

結果写真へのリンク

GridBagLayout を使用する代わりに GridLayout(1,0) を使用するとコードが機能するため、間違って使用しているように感じます。

お時間をいただきありがとうございます。

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 に答える