[英]Forcing JPanel with GridLayout to update / resize
我有一個帶BorderLayout的框架。 在BorderLayout的中心有一個帶有GridLayout的JPanel。 有時我必須將這個內部JPanel的GridLayout從9x9更改為4x4(或16x16)。 但不幸的是,細胞的大小保持不變。 手動調整框架大小后,布局會調整大小,然后再次顯示正確的大小。 以下是更改為4x4后和調整大小后的樣子:
如何強制內部面板自動更新? 我嘗試在內部面板(具有GridLayout的那個)和框架上重繪()。 目前我使用這個有一些令人討厭的副作用的代碼:
Dimension size = frame.getSize();
frame.setSize(new Dimension(size.height, size.width+1));
frame.setSize(size);
有沒有其他方法可以實現這一目標? 提前致謝!
手動調整框架大小后,布局會調整大小,然后再次顯示正確的大小
使用frame.pack()
而不是根據組件的首選大小設置適合組件的frame.size()
。
添加所有組件后,最后調用frame.setVisible(true)
。
永遠不要為組件調用setSize()
,並讓布局管理器決定組件的大小和位置。
閱讀更多我應該避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.