プロが教える店舗&オフィスのセキュリティ対策術

GridBagLayoutで、画面設計を行ったのですが、リサイズ(画面端を引っ張って拡大した)際に、配置したものが、中央に寄ってしまいます。配置物もそれに合わせて拡大したいのですが、方法をご存知の方、いらっしゃいましたら、よろしくお願い致します。

A 回答 (1件)

こんばんは。

GridBagLayoutは難しいですよね。
私はGridBagLayoutの説明でよく悪例とされる「単純なレイアウトの入れ子」の方がメンテナンス性が高いと思ってます。

weightx、weightyとfillの値を設定すると思ったように動作しませんでしょうか?
==================================================
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame {
public static void main(String[] args) {
new Test().setVisible(true);
}

public Test() {
super("TEST");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
JPanel p = new JPanel();
GridBagLayout layout = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
p.setLayout(layout);
p.setBackground(Color.GREEN);
setContentPane(p);
c.fill = GridBagConstraints.HORIZONTAL; // 左右にリサイズ(ただし1段目は拡張不可)
c.weightx = 0; // 1段目は拡張不可
c.weighty = 0;
c.insets = new Insets(5, 5, 5, 5);

JButton btn1 = new JButton("BTN1");
c.gridx = 0;
c.gridy = 0;
layout.setConstraints(btn1, c);
p.add(btn1);

JButton btn2 = new JButton("BTN2");
c.gridx = 2;
c.gridy = 0;
layout.setConstraints(btn2, c);
p.add(btn2);

c.weightx = 1; // 2段目は拡張可能
c.weighty = 1;

JButton btn3 = new JButton("BTN3");
c.gridx = 1;
c.gridy = 1;
layout.setConstraints(btn3, c);
p.add(btn3);

c.fill = GridBagConstraints.BOTH; // 右下は上下左右にリサイズ;

JButton btn4 = new JButton("BTN4");
c.gridx = 3;
c.gridy = 1;
layout.setConstraints(btn4, c);
p.add(btn4);
}
}

この回答への補足

回答、ありがとうございます。やってはみたのですが、うまくゆきませんでした。中央に、上下、左右のスクロールバーを配置しているので、それが原因かとも思ったのですが、全ての配置物が中央によるので、そういうわけでもないようです。

補足日時:2006/09/15 20:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!