[英]GridBagLayout manager and resizing controls
我不確定GridBagLayoutManager是否是唯一執行此操作的布局管理器,但這是我的問題。 我在GridBagLayout中有4個水平放置的控件。 為了使這個例子簡單,每個控件得到的形狀相等1/4,每個控件的調整大小與其他控件相同。 這四個控件是JTextField,其中每個文本字段映射到ResultSet中記錄中的列。 表單上的其他控件允許用戶瀏覽記錄。
如果我從一個記錄導航到下一個記錄,則文本字段將更新其文本以顯示新數據。 但是,文本字段也會根據顯示的文本量自動調整大小...大量數據的文本字段大小擴大,數據量較小的文本字段會被壓縮。 如果我在ResultSet中運行10條記錄,那么控件總是調整自己的大小,至少可以說它看起來很奇怪。
我想要做的是防止這些控件調整大小,除非(並且直到)底層容器調整大小。 因此,如果我調整窗口大小,那么我希望控件調整大小(根據布局中的“權重x”變量),但我不希望控件調整大小只是因為它們顯示的文本量變得更多或更少。
有人在這有什么想法嗎?
對於JTextField
(如內容中所述),調用setColumns(int)
以在文本上設置首選大小。
對於JComboBox
,調用setPrototypeDisplayValue(Object)
將導致該值被渲染,並且將根據該值設置JComboBox
的首選大小。
通常,您可以直接在任何組件上調用setPreferredSize(Dimension)
來獲得相同的行為。 常規如果未設置,則根據組件的某些默認值計算該值。 JTextField
, JComboBox
和大多數JTextComponent
衍生產品正在發生什么。 這些組件的首選大小是由用戶能夠更改的值(文本值,組合框選擇)驅動的。 而對於大多數其他組件( JButton
, JCheckBox
等),當用戶對其進行操作時,內容大小並沒有真正改變。 設置列和行以及原型顯示值可修復用於計算首選大小的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.