自动调整标签内容

时间:2010-04-30 11:55:25

标签: java swing

我的程序中有一个显示图像的标签。问题是,如果选择的图像大于标签,则只显示部分图像。

如何显示整个图像?

image = new ImageIcon(movpath);     
l5=new JLabel(image);
l5.setBounds(360,300,200,200);
p1.add(l5);

参考上述代码所需的帮助

3 个答案:

答案 0 :(得分:2)

无需为此编写自定义代码。更改图标时,JLabel将自动调整大小。

问题在于您使用的是null布局,并且大小固定为(200,200),因此标签无法增长或缩小。

如果要使用固定区域显示标签,请将标签添加到滚动窗格并设置滚动窗格的首选大小。然后,如有必要,将出现滚动条。

通过使用布局管理器摆脱null布局并设计合适的GUI。你会为自己省下很多悲伤。

由于您提出了很多初学者问题,我建议您先阅读Swing tutorial了解基础知识。布局管理人员得到了很好的覆盖。

答案 1 :(得分:1)

为上述场景找到了方法。要调整大小,请使用以下代码:

image = new ImageIcon(movpath);

    l5 = new JLabel ()
    { 

        public void paintComponent (Graphics g) 
        { 
            super.paintComponent (g); 
            g.drawImage (image.getImage(), 0, 0, getWidth (), getHeight (), null); 
        } 
    }; 
    l5.setBounds(360,300,200,200);
    p1.add(l5);
    l5.addMouseListener(this);

答案 2 :(得分:1)

要将图像大小调整为JLabel的大小,您需要以下内容:

l5 = new JLabel ()
{ 
    public void paintComponent (Graphics g) 
    { 
        super.paintComponent (g); 
        g.drawImage (image.getScaledInstance(getWidth(), getHeight(), Image.SCALE_DEFAULT), 0, 0, getWidth (), getHeight (), this); 
    } 
};