これまではGridBagLayout
(手書きのコードで)なるべく使わないようにしていましたが、今回はどうしても避けられず、SUNのチュートリアルGridBagLayoutを読んでいるのですが、今の
ところうまくいきません。私は何かを誤解していると思います。
たとえば、次のコードを試してみます (SUN の投稿にあるものと似ています)。
public class MainFrame extends JFrame {
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MainFrame frame = new MainFrame();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame
*/
public MainFrame() {
super();
setBounds(100, 100, 500, 375);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container mainContainer = getContentPane();
mainContainer.setLayout(new GridBagLayout());
//add label
JLabel someLabel = new JLabel("Label 1:");
GridBagConstraints constraints = new GridBagConstraints();
constraints.gridx = 0;
constraints.gridy = 0;
//constraints.anchor = GridBagConstraints.FIRST_LINE_START;
//constraints.weightx = 0.5;
mainContainer.add(someLabel, constraints);
JTextField someText = new JTextField(30);
constraints = new GridBagConstraints();
constraints.gridx = 1;
constraints.gridy = 0;
constraints.weightx = 0.5;
mainContainer.add(someText, constraints);
//
}
}
フレームの中央にラベルとテキストフィールドを並べて表示します。
しかし、ラベルの gridx と gridy が 0 であるため、左上隅に表示されることを期待していました。同じ結果
を設定しても。
私はここで間違っていますか?
SUN の投稿から: constraints.anchor = GridBagConstraints.FIRST_LINE_START;
コンポーネントの左上の行と列を指定します。一番左の列にはアドレス gridx=0 があり、一番上の行にはアドレス gridy=0 があります。