1

こんにちは、Java の初心者で、GridBagLayout を使用して小さな GUI を作成しています。添付のコードと出力も参照してください。私が欲しいのは、 gridx と gridy で割り当てられた位置に従って、JButtons を左上隅に配置することです。しかし、期待どおり左上ではなく中央にコンポーネントを配置します。Insets を使用すると、gridx /gridy すべてが機能しますが、適切な座標からではありません。添付のコードと画像を参照してください。

public  rect()
{     

      JPanel panel = new JPanel( new GridBagLayout());
      GridBagConstraints gbc = new GridBagConstraints();
      JButton nb1= new JButton("Button1  ");
      JButton nb2= new JButton("Button2  ");

      gbc.gridx=0;
      gbc.gridy=0 ;
      panel.add(nb1, gbc);
      gbc.gridx=1;
      gbc.gridy=1; 
      panel.add(nb2, gbc);
      panel.setVisible(true);
      JFrame  frame = new JFrame("Address Book "); 
      frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
      frame.setSize(300, 300 );
      frame.add(panel);

      frame.setVisible(true); 


}

OUTPUT : これらのボタンを左上に配置してください。

ここに画像の説明を入力

4

1 に答える 1

1

問題はの使用の方が多いと思います。すべてのコンポーネントを追加した後、可視に設定する前に、setSize(..)適切なインスタンスを使用しLayoutManagerて呼び出す必要があります。pack()JFrameJFrameJFramepanel.setVisible(..)

ここに画像の説明を入力

public static void main(String[] args) {

    SwingUtilities.invokeLater(new Runnable() {
        @Override

        public void run() {
            JPanel panel = new JPanel(new GridBagLayout());

            JButton nb1 = new JButton("Button1  ");
            JButton nb2 = new JButton("Button2  ");

            GridBagConstraints gbc = new GridBagConstraints();

            gbc.gridx = 0;
            gbc.gridy = 0;
            panel.add(nb1, gbc);

            gbc.gridx = 1;
            gbc.gridy = 1;
            panel.add(nb2, gbc);

            JFrame frame = new JFrame("Address Book ");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

            frame.add(panel);

            frame.pack();
            frame.setVisible(true);
        }
    });
}
于 2012-11-30T19:39:50.590 に答える