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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何让JLabel在JFrame中动态调整大小?相关的知识,希望对你有一定的参考价值。

我对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);
    }

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

答案

你可以使用Stretch Icon

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

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

另一答案

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

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

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

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

以上是关于如何让JLabel在JFrame中动态调整大小?的主要内容,如果未能解决你的问题,请参考以下文章

调整框架大小时保持圆心

如何让 JFrame 没有任务栏按钮?

JFrame.setBackground(Color)修改ImageIcon大小

调整图片大小以适合 JLabel

Swing JLabel:强制重绘()

如何让 UITextView 根据内容动态调整自身大小