簡體   English   中英

使用PaintComponent Java繪制圖像

[英]Image drawing with PaintComponent Java

我目前正在學習Java,但又在書中遇到了無法使用的代碼,我不知道為什么。 此代碼段來自Head First Java

import javax.swing.*;
import java.awt.*;

public class SimpleGui {

    public static void main (String[] args){
        JFrame frame = new JFrame();
        DrawPanel button = new DrawPanel();

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.getContentPane().add(button);

        frame.setSize(300,300);

        frame.setVisible(true);
    }
}


import java.awt.*;
import java.lang.*;

public class DrawPanel extends JPanel {
private Image image;

public DrawPanel(){
    image = new ImageIcon("cat2.jpg").getImage();
}
public void paintComponent(Graphics g){

    g.drawImage(image,3,4,this);
    }
}

該圖像與我的班級文件位於同一目錄中,並且該圖像未顯示。 我在這里想念什么?

1)在paintComponent()您必須調用super.paintComponent(g); 閱讀有關定制繪畫的更多信息。

2)代替Image使用BufferedImage ,因為Image的抽象包裝器。

3)使用ImageIO代替創建Image這樣new ImageIcon("cat2.jpg").getImage();

4)使用URL作為項目內部的資源。

我更改了您的代碼,它可以幫助您:

class DrawPanel extends JPanel {
    private BufferedImage image;

    public DrawPanel() {
        URL resource = getClass().getResource("cat2.jpg");
        try {
            image = ImageIO.read(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image, 3, 4, this);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM