所以我已经完成了创建一个内部有两个标签和一个按钮的面板,这些面板通过框布局在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);
如果你能告诉我,我将不胜感激! 感谢
答案 0 :(得分:2)
您无需设置水平或垂直对齐。这些属性与布局管理器(即BorderLayout)一起使用,该布局管理器将组件的大小更改为大于组件的首选大小。然后组件根据其绘制规则对齐文本。
相反,您需要设置x对齐方式。在这种情况下,组件大小仍然是首选大小。但是,布局管理器将组件与容器中的可用空间对齐。因此,要将组件置于容器宽度中心,您将使用:
averageLength.setAlignmentX(0.5f);
totalWords.setAlignmentX(0.5f);
stats.setAlignmentX(0.5f);
BoxLayout不会更改组件的大小,因此它会尊重此属性。