我在谷歌搜索了這個話題,但是我不知道該怎麼做。 我的問題是:爲什麼圖像不顯示?
我的代碼出了什麼問題?如何修改它。
許多網站的答案總是使用URL,我怎麼知道我的圖片的網址?
下面是代碼:
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class TwoPanel {
public static void main(String[] args) {
JFrame frame = new JFrame ("Key test");
MyDrawPanel1 dp1 = new MyDrawPanel1();
//MyDrawPanel2 dp2 = new MyDrawPanel2();
//MyDrawPanel3 dp3 = new MyDrawPanel3();
//MyDrawPanel4 dp4 = new MyDrawPanel4();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible (true);
JPanel p = new JPanel();
p.setLayout(new BorderLayout());
p.add (dp1);
//p.add (dp2);
//p.add(dp3);
//p.add(dp4);
frame.getContentPane().add(p);
frame.pack();
}
}
那麼drawpanel:
public class MyDrawPanel1 extends JPanel {
/**
*
*/
private static final long serialVersionUID = 1L;
Image image = new ImageIcon("Koala.jpg").getImage();/*something new: if i use the
path to the disk name(D:/Java/workspace/firstJava/src/com/founder/panel/Koala.jpg'),
it can work.*/
public void paintComponent (Graphics g) {
super.paintComponent(g);
//Graphics2D g2 = (Graphics2D) g;
g.drawImage(image, 3, 4, null);
}
public Dimension getPreferredSize() {
if (image != null) {
return new Dimension(image.getWidth(null), image.getHeight(null));
}
return super.getPreferredSize(); // default
}
}
這個面板可以工作,雖然我上無法理解爲什麼其他不起作用
package com.founder.panel;
import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.image.*;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import javax.imageio.ImageIO;
public class MyDrawPanel4 extends JPanel{
/**
*
*/
private static final long serialVersionUID = 1L;
private static final String URL_PATH = "file:///D:/Java/workspace/firstJava/src/com/founder/panel/" +
"Koala.jpg";
BufferedImage image = null;
public MyDrawPanel4() {
// TODO Auto-generated constructor stub
setBackground(Color.white);
try {
image = ImageIO.read(new URL(URL_PATH));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public Dimension getPreferredSize() {
if (image != null) {
return new Dimension(image.getWidth(), image.getHeight());
}
return super.getPreferredSize(); // default
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (image != null) {
g.drawImage(image, 0, 0, null);
}
}
}
嘗試在幀後添加組件並打包幀後調用'setVisible' – MadProgrammer
對不起,圖像仍然不顯示 – Tony
然後圖像不是加載。存儲的圖像在哪裏(與您的應用程序有關)? – MadProgrammer