2

セルを結合するための変更を加えた GridLayout が必要です。そこで、GridBagLayout を見つけました。このレイアウトは非常に柔軟なようです。私はこの柔軟性を必要としません。たとえば、幅と高さ全体で 20 列と 10 行を使用する必要があることを GridBagLayout に伝える方法はありますか?? GridLayout のように見えるはずですが、セルが結合されています。

どうも

4

2 に答える 2

1

私の知る限り、同じ高さと幅を複数使用できますJComponent。ただし、セルを結合したい場所でそれらを変更する必要があります。

GridBagLayout の使用方法の例を次に示します。

protected void makebutton(String name,
                          GridBagLayout gridbag,
                          GridBagConstraints c) {
    Button button = new Button(name);
    gridbag.setConstraints(button, c);
    add(button);
}

public void init() {
    GridBagLayout gridbag = new GridBagLayout();
    GridBagConstraints c = new GridBagConstraints();
    setFont(new Font("SansSerif", Font.PLAIN, 14));
    setLayout(gridbag);
    c.fill = GridBagConstraints.BOTH;
    c.weightx = 1.0;
    makebutton("Button1", gridbag, c); 
    makebutton("Button2", gridbag, c);
    makebutton("Button3", gridbag, c);
    c.gridwidth = GridBagConstraints.REMAINDER; //end row
    makebutton("Button4", gridbag, c);

    c.weightx = 0.0;                //reset to the default
    makebutton("Button5", gridbag, c); //another row
    .........
}

したがって、常に高さと幅を指定する必要はありません。

于 2012-07-14T10:43:41.470 に答える
0

私のプロジェクトがはるかに簡単になるので、これが可能であることを願っています。ただし、これが答えです。

GridBagLayout には、グリッド内の行または列の数を明示的に定義するメソッドはなく、グリッド内の各セルのサイズを定義するメソッドもありません。代わりに、GridBagLayout は、画面に配置されたコンポーネントの数によって、グリッド内の行と列の数を計算します。コンテナーに 5 つのコンポーネントが水平に並んでいる場合、グリッドは 5 つの列と 1 つの行で構成されます。コンテナーに 5 つのコンポーネントが縦に並んでいる場合、グリッドは 1 列と 5 行で構成されます。

から入手しました:http://www2.sys-con.com/itsg/virtualcd/java/archives/0304/tabbone/index.html

私のプロジェクトでは、グリッド幅を使用して、Excel のようなグリッドを手動で作成し、そのグリッド構造内にオブジェクトを配置するために、1 ピクセル x 1 ピクセルの透明パネルの x と y の数で GridBagLayout の一番上の行と左の列を作成することを考えています。および gridheight を使用して、必要に応じてセルを結合します。これにより、複雑なレイアウトを簡単に作成し、すべてを正しくサイズ変更できます (木をたたきます)。

于 2015-01-05T21:16:54.720 に答える