每当我更改同一jpanel中其他jlabels的文字时,我如何停止在jpanel内更改jlabels的位置



我在jpanel中有多个jlabels。每当我将文本更改为一个时,它都会导致Jpanel内部的其他Jlabels移动。我如何将它们锁定在适当的位置?

该方法实际上取决于您的标签如何定位以及您使用的LayoutManager。

jlabel默认情况下将根据标签文本和字体大小来计算其大小。如果您要更改文本,则Jlabel的大小也会更改,从而使Layout Manager重新定位其他标签。

这是一个示例,使用flowlayout和硬设置jlabel首选大小,以便在文本更改时不会更改。其他布局经理可能会选择忽略首选大小:

    JFrame frame = new JFrame();
    frame.getContentPane().setLayout( new FlowLayout() );
    JLabel l = new JLabel("text1");
    l.setPreferredSize( new Dimension( 50, (int)l.getPreferredSize().getHeight() ) );
    frame.getContentPane().add(l);
    frame.getContentPane().add( new JLabel("text2") );
    frame.getContentPane().add( new JLabel("text3") );

在这里,如果您更改l的文本,它不会移动其他两个标签。

最新更新