所以我开始创建一个面板,里面有两个标签和一个按钮,这些标签通过框布局在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 不会更改组件的大小,因此它遵循此属性。