如何让JLabel在JFrame中动态调整大小?

问题描述 投票:3回答:2

我对Java比较陌生,所以我甚至不确定这是否可行,但我需要以某种方式让我的JLabel动态调整我的JFrame。它可能就像我缺少的一行代码一样简单,但坦率地说,我没有为自己解决这个问题所需的经验。

我尝试谷歌搜索和浏览其他Stack帖子,但他们要么通常无益或试图让我做类似的事情

class ImagePanel extends JPanel 

或类似的东西 - >我不能做,因为我已经用其他东西扩展我的代码。

希望我也能正确地表达我的问题......

为了清楚起见,我需要我的图像在我调整框架大小时自动调整大小。

我的代码如下:

public static void ScalingImage() throws IOException
    {
        MyCollage GP = new MyCollage();  
        BufferedImage image = ImageIO.read(new File("myCollage_Final.jpg"));
        JLabel label = new JLabel(new ImageIcon(image));
        JFrame aFrame = new JFrame();
        int picwidth = (int)Math.round(aFrame.getWidth());
        int picheight = (int)Math.round(aFrame.getHeight());
        aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        aFrame.getContentPane().add(label);
        aFrame.pack();
        aFrame.setSize(2000, 2000);
        aFrame.add(GP);
        aFrame.setLocation(0, 0);
        aFrame.setVisible(true);
    }

所以,如果这是我想念的东西,我很想知道它是什么。如果它不是那么明显,那么...我仍然想知道它是什么哈哈。

java swing jframe jlabel
2个回答
0
投票

你可以使用Stretch Icon

图像将自动调整大小以填充标签。您可以控制图像是按比例缩放还是完全填充区域。

使用StretchIcon比在其他链接中建议的自定义绘画更灵活,因为您可以从支持Icon的任何组件的自动调整大小中受益。


0
投票

“我不能这样做,因为我已经用其他东西扩展了我的代码。”

你没有“扩展代码”......你从特定的类扩展JPanel。所以完全有可能有一个扩展JPanel的类,另一个类继续扩展你已经扩展的类。

或者,实际上可能没有必要使用继承来满足您的其他需求。

此外,您发布的代码不是风格上正确的Java,也没有任何继承,这表明您误解了某些内容。

© www.soinside.com 2019 - 2024. All rights reserved.