我在製作一個需要顯示圖像的程序。我正在使用ImageIcon和Image類來執行此操作。我在構造函數中聲明瞭ImageIcon,然後通過i.getImage()分配圖像值。除圖像外的所有內容似乎都加載正常。這是我的代碼:Java:圖像不顯示
更新:我有與代碼相同的目錄中的圖像。我正在使用mac,並嘗試過「image.png」,「./image.png」,「Users/myStuff/Documents/workspace/Game/src/image.png」。其他的這些都起作用了。
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
@SuppressWarnings("serial")
public class Game extends JFrame {
int x = 100, y = 100;
private Image dbimage;
private Graphics dbg;
Image image;
class AL extends KeyAdapter {
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == e.VK_LEFT) {
if (x <= 20) {
x = 20;
} else {
x -= 5;
}
} else if (keyCode == e.VK_RIGHT) {
if (x >= 230) {
x = 230;
} else {
x += 5;
}
} else if (keyCode == e.VK_UP) {
if (y <= 20) {
y = 20;
} else {
y -= 5;
}
} else if (keyCode == e.VK_DOWN) {
if (y >= 230) {
y = 230;
} else {
y += 5;
}
}
}
}
public Game() {
//load up image
ImageIcon i = new ImageIcon("image.png");
image = i.getImage();
//set up properties
addKeyListener(new AL());
setTitle("Game");
setSize(250, 250);
setResizable(false);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBackground(Color.CYAN);
setVisible(true);
}
public void paint(Graphics g) {
dbimage = createImage(getWidth(), getHeight());
dbg = dbimage.getGraphics();
paintComponent(dbg);
g.drawImage(dbimage, 0, 0, this);
}
public void paintComponent(Graphics g) {
g.setFont(new Font("Arial", Font.BOLD | Font.ITALIC, 30));
g.setColor(Color.MAGENTA);
g.drawString("Hello World!", 50, 50);
g.setColor(Color.RED);
g.drawImage(image, 100, 100, this);
repaint();
}
public static void main(String[] args) {
new Game();
}
}
這取決於您放置圖像的位置。所以請確保你放置並使用正確的位置。 –
是的,圖像的正確路徑是我開始的地方。因此,請在最簡單的程序中進行調試 - 在JOptionPane中顯示ImageIcon。你也應該看看類似的問題沒有這個網站,因爲你正在繪製你的圖像都是錯誤的,包括試圖直接在JFrame中繪製它。每個教程,以及本網站上任何正確的答案都會告訴你永遠不要這樣做。 –
有關類似問題的列表,請查看右側相關問題列表,並查看[此Google搜索](https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie = UTF-8#q = JFrame的+圖像+ +未顯示+站點:http:%2F%2Fstackoverflow.com%2F)。 –