虽然我使用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);
}
答案 0 :(得分:1)
问题在于executePanel及其使用的布局。您没有给它一个明确的布局,因此它默认使用BorderLayout。如果你想在这个JPanel中居中按钮,那么考虑使用不同的布局,也许是GridBagLayout。
有关更具体的帮助,请考虑创建和发布minimal example program。