如何将已受 BoxLayout 影响的标签居中



所以我开始创建一个面板,里面有两个标签和一个按钮,这些标签通过框布局在Y_axis上分配。

我现在正在尝试获得它,以便将文本排列到面板的中心以及 Y 轴上以保持整洁。

这是我现在的代码:

JPanel statPanel = new JPanel();
statPanel.setBorder(BorderFactory.createTitledBorder("Text Statistics"));
statPanel.add((averageLength = new JLabel("The average length of the words: ")));
statPanel.add((totalWords = new JLabel("The total number of words: ")));
//Create button inside statPanel
statPanel.add((stats = new JButton("Update Text Statistics")));
stats.addActionListener(new ButtonListener());
statPanel.setOpaque(false);
statPanel.setLayout(new BoxLayout(statPanel, BoxLayout.Y_AXIS));

如您所见,我已经使用了BoxLayout来获得垂直对齐,并且我尝试了以下代码,这些代码似乎根本没有影响我的情况(并且看起来确实很长):

averageLength.setHorizontalAlignment(SwingConstants.CENTER);
averageLength.setVerticalAlignment(SwingConstants.CENTER);
totalWords.setHorizontalAlignment(SwingConstants.CENTER);
totalWords.setVerticalAlignment(SwingConstants.CENTER);
stats.setHorizontalAlignment(SwingConstants.CENTER);
stats.setVerticalAlignment(SwingConstants.CENTER);

如果您能告诉我,将不胜感激!谢谢

您无需设置水平或垂直对齐方式。这些属性与布局管理器(即 BorderLayout)一起使用,布局管理器将组件的大小更改为大于组件的首选大小。然后,组件根据其绘制规则对齐文本。

相反,您需要设置 x 对齐方式。在这种情况下,组件大小仍然是首选大小。但是,布局管理器会将组件与容器中的可用空间对齐。因此,要将组件在容器的宽度中居中,您将使用:

averageLength.setAlignmentX(0.5f);
totalWords.setAlignmentX(0.5f);
stats.setAlignmentX(0.5f);

BoxLayout 不会更改组件的大小,因此它遵循此属性。

相关内容

  • 没有找到相关文章

最新更新