我在JPanel中有多个JLabel。每当我更改一个文本时,它会导致JPanel内的其他JLabel移动。如何锁定它们?
答案 0 :(得分:-1)
这种方法实际上取决于标签的定位方式以及您使用的LayoutManager。
默认情况下,JLabel将主要根据标签文本和字体大小计算其大小。如果要更改文本,则JLabel大小也会更改,从而使布局管理器重新定位其他标签。
这是一个使用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
的文字,则不会移动其他2个标签。