簡體   English   中英

每當我更改同一 JPanel 中其他 JLabels 的文本時,如何停止 JLabels 在 JPanel 內更改的位置?

[英]How do I stop the position of JLabels changing inside a JPanel whenever I change the text of other JLabels in the same JPanel?

我在 JPanel 中有多個 JLabel。 每當我更改一個文本時,它會導致 JPanel 內的其他 JLabel 移動。 如何將它們鎖定到位?

該方法實際上取決於您如何定位標簽以及您使用的是什么 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 個標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM