0

フレームで右から左、上から下に描画するテーブルがいくつかあります。今は絶対レイアウトを使ってコーディネートをしています。それを実行できるJavaレイアウトはありBoxLayoutますか?テーブルの数は動的であることに注意してください。

2番目の質問は、これらのテーブルをフレームにドッキングするにはどうすればよいですか?つまり、フレームのサイズを変更しても、テーブルは画面上の位置を維持します。

4

2 に答える 2

2

ほとんどのレイアウトマネージャーは、コンポーネントの向きを尊重します。

panel.setComponentOrientation( ComponentOrientation.RIGHT_TO_LEFT );
panel.add(...);

または、いつでもコンテナの先頭にコンポーネントを追加できます

panel.add(component1, 0);
panel.add(component2, 0);
于 2013-02-23T20:37:12.567 に答える
0

テーブルに物を配置する場合は、グリッドを使用することをお勧めします。グリッド内のすべての要素は同じサイズである必要があります。

各行のサイズが異なる可能性がある場所にいくつかのアイテムを垂直に配置するには、次のことを試してください。

static JPanel buildPanel() {
    JPanel vPanel = new JPanel();
    BoxLayout layout = new BoxLayout(vPanel, BoxLayout.Y_AXIS);
    vPanel.setLayout(layout);
    JPanel[] rowPanels = new JPanel[5];
    int counter=1;
    for (int i = 0; i < rowPanels.length; i++) {
        rowPanels[i] = new JPanel();
        rowPanels[i].setLayout(new FlowLayout(FlowLayout.LEFT, 2, 2));
        rowPanels[i].add(new JButton("button " + counter++));
        rowPanels[i].add(new JButton("Your button " + counter++));
        rowPanels[i].add(new JButton("Shabutton"));
        vPanel.add(rowPanels[i]);
    }
    return vPanel;
}

public static void main(String[] args) {
    JFrame gridFrame = new JFrame();
    gridFrame.add(buildPanel() );
    gridFrame.pack();
    gridFrame.setVisible(true);
}

gridFrame.setResizable(false); 次のようなメソッド呼び出しを使用してウィンドウのサイズが変更されたときに、行の間にsapceが追加されないようにすることができます。

rowPanels[i].setMaximumSize(new Dimentsion(400,32));
于 2013-02-23T12:47:25.163 に答える