[英]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.