Java 显示图像图标
我试图在Java 显示图像图标,java,swing,paint,imageicon,Java,Swing,Paint,Imageicon,我试图在JPanel上显示图像。我使用一个ImageIcon来渲染图像,并且图像与类文件位于同一目录中。但是,没有显示图像,并且没有发生错误。谁能帮我找出我的代码有什么问题吗 package ev; import java.awt.Graphics; import javax.swing.ImageIcon; import javax.swing.JPanel; public class Image extends JPanel { ImageIcon image = new Im
JPanel
上显示图像。我使用一个ImageIcon
来渲染图像,并且图像与类文件位于同一目录中。但是,没有显示图像,并且没有发生错误。谁能帮我找出我的代码有什么问题吗
package ev;
import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class Image extends JPanel {
ImageIcon image = new ImageIcon("peanut.jpg");
int x = 10;
int y = 10;
public void paintComponent(Graphics g) {
super.paintComponent(g);
image.paintIcon(this, g, x, y);
}
}
你应该使用
ImageIcon image = new ImageIcon(this.getClass()
.getResource("org/myproject/mypackage/peanut.jpg"));
这是程序员之间常见的困惑。这个
getClass().getResource(path)
从类路径加载资源
ImageIcon image=新的ImageIcon(“peant.jpg”)代码>
如果我们只提供图像文件的名称,那么Java就是
正在当前工作目录中查找它。
如果您使用的是NetBeans,那么CWD就是项目目录。你
可以通过以下调用在运行时计算CWD:
System.out.println(新文件(“”.getAbsolutePath())代码>
下面是一个代码示例,您可以在其中自己测试它
package com.zetcode;
import java.awt.Dimension;
import java.awt.Graphics;
import java.io.File;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
class DrawingPanel extends JPanel {
private ImageIcon icon;
public DrawingPanel() {
loadImage();
int w = icon.getIconWidth();
int h = icon.getIconHeight();
setPreferredSize(new Dimension(w, h));
}
private void loadImage() {
icon = new ImageIcon("book.jpg");
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
icon.paintIcon(this, g, 0, 0);
}
}
public class ImageIconExample extends JFrame {
public ImageIconExample() {
initUI();
}
private void initUI() {
DrawingPanel dpnl = new DrawingPanel();
add(dpnl);
// System.out.println(new File("").getAbsolutePath());
pack();
setTitle("Image");
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame ex = new ImageIconExample();
ex.setVisible(true);
}
});
}
}
程序使用以下命令运行:
$~/bin/jdk1.7.0_45/bin/java com.zetcode.imageiconample
您可以在我的教程中找到更多信息。很抱歉,使用getClass()时出现了错误。getResource(路径)
$ pwd
/home/vronskij/prog/swing/ImageIconExample
$ tree
.
├── book.jpg
└── com
└── zetcode
├── DrawingPanel.class
├── ImageIconExample$1.class
├── ImageIconExample.class
└── ImageIconExample.java
2 directories, 5 files