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

时间:2015-12-29 08:12:45

标签: java swing jframe jlabel

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

所以,如果它显而易见,我很遗憾,我很想知道它是什么。如果它 - 那么显而易见,那么......我仍然想知道它是什么哈哈。

2 个答案:

答案 0 :(得分:0)

您可以使用Stretch Icon

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

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

答案 1 :(得分:0)

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

你没有“用”扩展代码“......你从特定类扩展JPanel。因此,完全可以使一个类扩展JPanel,另一个类继续扩展您已扩展的内容。

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

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