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

3
我是一个相对新手的Java程序员,不确定是否能够实现以下需求:我需要使我的JLabel随着JFrame动态调整大小。也许只是我缺失了一行简单的代码,但老实说,我没有足够的经验来解决这个问题。
我已经尝试过在Google和其他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);
    }

所以,如果我错过了一些显而易见的东西,我希望知道是什么。如果是一些不那么明显的东西,那么......我还是想知道是什么哈哈。


我的第一个想法是使用适当的布局管理器,但我猜你实际上想要调整图标大小,而JLabel无法做到。你可以看看这个例子,它为JButton做了类似的事情。 - MadProgrammer
或者您可以查看这个例子,它演示了一个可调整大小的组件,当组件被调整大小时,它会自动缩放其关联的图像。 - MadProgrammer
2个回答

0

您可以使用Stretch Icon

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

使用StretchIcon比建议在其他链接中进行自定义绘画更加灵活,因为您可以从支持图标的任何组件上获得自动调整大小的好处。


0

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

你不是“用代码扩展”...你是从一个特定的类中扩展JPanel。所以完全可以有一个类扩展JPanel,而另一个类继续扩展你已经扩展的内容。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接