如何在添加Jlabel之前阻止JButton更改位置

时间:2018-10-04 15:14:43

标签: java swing jbutton jlabel

我有一个JLabel(seriesInformationLabel),最初是空白的。旁边有一个Jbutton(copyButton)。问题是,每次JLabel加载文本值时,JButton就会向右移动。如何阻止该JButton移动?

private void init() {
    super.initializeLayout();
    this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));

    Box buttonPanel = Box.createHorizontalBox();
    buttonPanel.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
    buttonPanel.setLayout(null);
    copyButton = new JButton(Utilities.getString("COPY"));
    copyButton.setActionCommand(COPY);
    copyButton.setEnabled(false);

    seriesInformationLabel = new JLabel();
    seriesInformationLabel.setAlignmentY(CENTER_ALIGNMENT);
    seriesInformationLabel.setName(this.getClass().getSimpleName() + "_seriesInformationLabel");

    buttonPanel.add(Box.createRigidArea(new Dimension(10, 0)));
    buttonPanel.add(seriesInformationLabel);
    buttonPanel.add(Box.createHorizontalGlue());
    buttonPanel.add(copyButton);
    buttonPanel.add(Box.createHorizontalGlue());
  }

1 个答案:

答案 0 :(得分:1)

buttonPanel.add(seriesInformationLabel);
buttonPanel.add(Box.createHorizontalGlue());
buttonPanel.add(copyButton);
buttonPanel.add(Box.createHorizontalGlue());

自由空间随着标签文本的变化而变化。

这意味着“胶水”的可用空间将在两个胶水成分之间平均变化,从而导致按钮移动。

如果您不希望按钮移动,则需要去除第二个“胶水”组件:

buttonPanel.add(seriesInformationLabel);
buttonPanel.add(Box.createHorizontalGlue());
buttonPanel.add(copyButton);
//buttonPanel.add(Box.createHorizontalGlue());

如果您不希望按钮完全位于面板的右边缘,则可以添加另一个刚性区域。