如何使面板中的按钮居中

时间:2014-07-12 03:05:53

标签: java position jpanel jbutton

虽然我使用BorderLayout.CENTER,但我的按钮组似乎仍然与面板的北边对齐。如果我使用BorderLayout.SOUTH,它们的相对位置与BorderLayout.CENTER相同,但是在面板的南边。

如何让它们位于面板中间?

我做的事情是否明显错误?

public void createExecuteArea() {

      JButton connectButton = new JButton("Connect");
      connectButton.setPreferredSize(new Dimension(100, 40));
      JButton disconnectButton = new JButton("Disconnect");
      disconnectButton.setPreferredSize(new Dimension(100, 40));
      JButton abortButton = new JButton("Abort");
      abortButton.setPreferredSize(new Dimension(100, 40));

      executePanel = new JPanel();
      executePanel.setLayout(new BorderLayout());

      JPanel buttonPanel = new JPanel();

      buttonPanel.add(connectButton);
      buttonPanel.add(disconnectButton);
      buttonPanel.add(abortButton);

      executePanel.add(buttonPanel, BorderLayout.CENTER);
   }

我的代码的以下更改解决了我的问题。

public void createExecuteArea() {

      JButton connectButton = new JButton("Connect");
      connectButton.setPreferredSize(new Dimension(100, 40));
      JButton disconnectButton = new JButton("Disconnect");
      disconnectButton.setPreferredSize(new Dimension(100, 40));
      JButton abortButton = new JButton("Abort");
      abortButton.setPreferredSize(new Dimension(100, 40));

      executePanel = new JPanel(new GridBagLayout());
      GridBagConstraints c = new GridBagConstraints();

      JPanel buttonPanel = new JPanel();

      buttonPanel.add(connectButton);
      buttonPanel.add(disconnectButton);
      buttonPanel.add(abortButton);

      executePanel.add(buttonPanel, c);
   }

1 个答案:

答案 0 :(得分:1)

问题在于executePanel及其使用的布局。您没有给它一个明确的布局,因此它默认使用BorderLayout。如果你想在这个JPanel中居中按钮,那么考虑使用不同的布局,也许是GridBagLayout。

有关更具体的帮助,请考虑创建和发布minimal example program