gpt4 book ai didi

java - 将 JButtons 对齐在嵌套 JPanel 的中心 (BoxLayout)

转载 作者:行者123 更新时间:2023-12-02 02:56:24 25 4
gpt4 key购买 nike

我有一个 JFrame 的子类,并且其中有以下布局。我有一个大的 panel 和一个小的 buttonsPanel 以及两个 JButtons。我将按钮添加到较小的面板,并将该面板添加到第一个面板。按钮应该居中,但事实并非如此。

panel=new JPanel();
add(panel);
panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));

JButton button1=new JButton("button1");
JButton button2=new JButton("button2");

buttonsPanel=new JPanel();
buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.X_AXIS));

buttonsPanel.add(button1, CENTER_ALIGNMENT);
buttonsPanel.add(button2, CENTER_ALIGNMENT);
panel.add(buttonsPanel, BorderLayout.CENTER);

我应该做什么?

最佳答案

您确实需要阅读 Layout Managers 上的 Swing 教程。您需要了解什么是“约束”以及何时使用它。

buttonsPanel.add(button1, CENTER_ALIGNMENT);

按钮面板使用 BoxLayout。它不支持任何约束,因此 CENTER_ALIGNMENT 没有任何意义。

panel.add(buttonsPanel, BorderLayout.CENTER);

同样,面板使用 BoxLayout。您不能只使用 BorderLayout 约束。

将组件(在框架上垂直和水平)居中的最简单方法是使用 GridBagLayout。

所以基本代码可能是这样的:

JPanel buttonsPanel = new JPanel();
buttonsPanel.add(button1);
buttonsPanel.add(button2);

frame.setLayout( new GridBagLayout() );
frame.add(buttonsPanel, new GridBagConstraints());

如果你想尝试使用 BoxLayout 那么你需要在面板前后使用“glue”:

Box vertical = Box.createVerticalBox();
vertical.add(Box.createVerticalGlue());
vertical.add(buttonsPanel);
vertical.add(Box.createVerticalGlue());

再次阅读教程,了解有关 BoxLayout 的更多基本信息。

关于java - 将 JButtons 对齐在嵌套 JPanel 的中心 (BoxLayout),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43007625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com