簡體   English   中英

如何在GroupLayout中調整圖像大小?

[英]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.

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