虽然我使用的是 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);
}
最佳答案
问题在于executePanel 及其使用的布局。您没有给它明确的布局,因此它默认使用 BorderLayout。如果您想在此 JPanel 中居中放置按钮,请考虑使用不同的布局,也许是 GridBagLayout。
如需更具体的帮助,请考虑创建并发布 minimal example program .
关于java - 如何使面板中的按钮居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24709232/