[英]How to resize image in GroupLayout?
我有一個圖像,在grouplayout中顯示一個標簽。我希望在窗口大小改變時調整圖像大小,但標簽的getSize()總是返回零寬度和高度,這會導致拋出異常。 這是我的代碼的相關部分:
GroupLayout gl_panel_3 = new GroupLayout(panel_3);
gl_panel_3.setHorizontalGroup(gl_panel_3.createParallelGroup(
Alignment.LEADING).addGroup(
gl_panel_3
.createSequentialGroup()
.addContainerGap()
.addComponent(logoPanel,GroupLayout.PREFERRED_SIZE,300,Short.MAX_VALUE)
.addComponent(topButtonPanel,
GroupLayout.PREFERRED_SIZE, 519,
GroupLayout.PREFERRED_SIZE).addContainerGap()));
gl_panel_3.setVerticalGroup(gl_panel_3.createParallelGroup(
Alignment.LEADING)
.addComponent(logoPanel,GroupLayout.PREFERRED_SIZE,100,Short.MAX_VALUE)
.addComponent(topButtonPanel,GroupLayout.PREFERRED_SIZE, 100, Short.MAX_VALUE));
JLabel label22 = new JLabel();
GroupLayout gl_logoPanel = new GroupLayout(logoPanel);
gl_logoPanel.setHorizontalGroup(
gl_logoPanel.createParallelGroup(Alignment.LEADING)
.addGroup(gl_logoPanel.createSequentialGroup()
.addComponent(logoLabel, GroupLayout.PREFERRED_SIZE, 122, GroupLayout.PREFERRED_SIZE)
.addContainerGap(313, Short.MAX_VALUE))
);
gl_logoPanel.setVerticalGroup(
gl_logoPanel.createParallelGroup(Alignment.LEADING)
.addComponent(logoLabel, GroupLayout.DEFAULT_SIZE, 104, Short.MAX_VALUE)
);
ImageIcon icon = new ImageIcon(getClass().getResource("/icons/noa_en/logo.png"));
ImageIcon scaledinstance = new ImageIcon(icon.getImage().getScaledInstance(label22.getWidth(), label22.getWidth(), Image.SCALE_SMOOTH));
label22.setIcon(scaledinstance);
我想知道如何在grouplayout中做到這一點,或者我是否需要更改我的布局管理器?
但是標簽的getSize()總是返回零寬度和高度,這會導致拋出異常。
一旦GUI可見,組件只有一個大小。
我想知道如何在grouplayout中做到這一點,或者我是否需要更改我的布局管理器?
GroupLayout通常僅用於IDE,因為它使用起來很復雜。 大多數開發人員將自己編寫GUI並使用各種布局管理器來實現所需的布局。
在任何情況下,JLabel上的Icon總是以其實際大小顯示,因此無論您使用什么布局都無關緊要,圖像大小不會改變。
但是,您可以使用Darryl的Stretch Icon ,它可以根據標簽的可用空間進行拉伸/縮小。 我不知道它是否適用於GroupLayout,但它確實可以與支持動態大小調整的其他布局管理器一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.