我在谷歌搜索了这个话题,但是我不知道该怎么做。 我的问题是:为什么图像不显示?
我的代码出了什么问题?如何修改它。
许多网站的答案总是使用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