开发者

Java: Load image from file, edit and add to JPanel

I want to load an image from my computer into 2D Graphics so that I can edit it afterwards and then I want to add it to JPanel. If you need to see my project I can send it to you.

void loadImage()
{

    FileDialog fd = new FileDialog(new Frame(), "Please choose a file:", FileDialog.LOAD);
    fd.show();
    if (fd.getFile() != null)
    {
        File fil = new File(fd.getDirectory(), fd.getFile());
        strDirectory = fd.getDirectory();
        s开发者_C百科trFileType = fd.getFile();
        mainImage.setIcon(new ImageIcon(fil.toString()));
        getFileList(strDirectory);
        checkFileType(strFileType);
    }
}

Thanks in advance


To load your image into the memory, you can use ImageIO.read(File). To edit it afterwards, obtain a Graphics2D instance from it by calling createGraphics():

BufferedImage img = ImageIO.read(yourFile);
Graphics2D g = img.createGraphics();
// Draw here on the graphics
g.dispose();

You can even turn on anti-alias by setting a RenderingHint before drawing:

g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
                   RenderingHints.VALUE_ANTIALIASING_ON);

Then, to add it to a JPanel, create your custom JComponent and add an instance of that component to your JPanel:

public class JImageComponent extends JComponent
{
    private BufferedImage img;

    public JImageComponent(BufferedImage bi)
    {
        img = bi;
    }

    @Override
    public void paintComponent(Graphics g)
    {
        g.drawImg(img, 0, 0, this);
    }

}


please read this tutorials about Icon in Swing and your Image/ImageIcon would by placed to the JLabel, this way eliminated all troubles came from paint/paintComponents ...


For image loading you should use ImageIO object with method read(File file) see docs. Then you will get BufferedImage instance of which you can make your changes through Graphics2D instance which you'll obtain by calling createGraphics() on the image instance see docs. Last thing, override method paintComponent() from JPanel or better JComponent see docs and there you can draw your image on Graphics instance which you'll get as parameter in paintComponent(Graphics g) method by calling drawImage(Image img, int x, int y, ImageObserver observer) see docs where ImageObserver set to null.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜