Java:JPanel中的图像显得非常小

时间:2014-03-14 01:32:59

标签: java image swing jframe jpanel

所以我在JPanel中绘制了一个图像,它本身被添加到JFrame中。但是,当第一次绘制图像时,它看起来非常小。我不确定这是面板问题还是图像问题。如下图所示: ![在此输入图像说明] [1]

我在图像周围画了一个矩形。

现在JPanel应该包含在JFrame中。如上所示,JFrame不应该被着色。 JPanel的大小约为JFrame的四分之一,图像应该占据几乎所有的JPanel。

您能否告诉我它是问题的图像还是面板。对不起,如果它看起来很明显。

等待SSCCE

3 个答案:

答案 0 :(得分:5)

根据您发布的几行代码,我不知道您在做什么。在代码中没有任何地方你实际创建/读取图像。

据我所知,Mandelbrot Set实际上是通过绘制代码来完成的。如果是这样,问题可能是您没有覆盖绘制面板的getPreferredSize()(不要使用setSize()方法)来返回您正在绘制的图像的大小。有关详细信息,请阅读Custom Paining上的Swing教程中的部分。

或者,如果您实际使用的是现有图像,请阅读How to Use Icons上的Swing教程中的部分,了解使用图像的工作示例。

此外,在使框架可见之前,应将组件添加到框架中。

如果您需要更多帮助,请发布展示问题的正确SSCCE

答案 1 :(得分:1)

BufferedImage image = ImageIO.read(file); //Read image through BufferedReader

labelimage.setIcon(new ImageIcon(image.getScaledInstance(labelimage.getWidth(), labelimage.getHeight(), image.SCALE_SMOOTH))); // This line will automaticallically set Image size equal to size of Jlabel 

答案 2 :(得分:-1)

如何在面板中添加标签,并使用setIcon(..)

绘制图像

通常我使用下面的类来使图像符合标签大小(我使我的标签具有静态大小 - 不可调整大小)..你可能想修改它以满足你的需要..

import java.awt.Component;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.awt.image.ImageObserver;
import java.net.URL;
import javax.swing.ImageIcon;

public class CustomImageIcon extends ImageIcon {

    private BufferedImage dest;

    public CustomImageIcon(String filename) {
        super(filename);
    }

    public CustomImageIcon(Image image) {
        super(image);
    }

    public CustomImageIcon(URL location) {
        super(location);
    }

    @Override
    public synchronized void paintIcon(Component c, Graphics g, int x, int y) {

        if(c!=null)
            dest = new BufferedImage(c.getWidth(), c.getHeight(), BufferedImage.TYPE_INT_ARGB);
        else dest = new BufferedImage(getIconWidth(), getIconHeight(), BufferedImage.TYPE_INT_ARGB);

        ImageObserver imgObs = getImageObserver();
        if(imgObs==null) imgObs = c;

        int width;
        int height;
        if(c!=null)
        {
            width = c.getWidth();
            height = c.getHeight();
        }
        else
        {
            width = getIconWidth();
            height = getIconHeight();
        }


        g.drawImage(dest, 0, 0, c);
            g.drawImage(
                    getImage(),
                    0,
                    0,
                    width,
                    height,
                    imgObs);
    }
}