[英]How to add an image to my GUI using an ImageIcon?
我很困惑如何在 java 中将图像添加到我的 GUI。 下面是我的代码,我正在使用ImageIcon
来实现图像“map.png”,但是当我运行这个程序时,图像没有出现。 这是因为它与 my.java 文件不在同一个文件夹中,还是有其他问题?
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class GUI implements ActionListener
{
private int count = 0;
private JLabel label;
private JFrame frame;
private JPanel panel;
public GUI()
{
frame = new JFrame();
frame.setResizable(false);
ImageIcon icon = new ImageIcon("map.png");
JLabel picture = new JLabel(icon);
JButton button = new JButton("Click me");
button.addActionListener(this);
label = new JLabel("Number of clicks: 0");
panel = new JPanel();
panel.setBorder(BorderFactory.createEmptyBorder(400, 700, 10, 30));
panel.setLayout(new GridLayout(0, 1));
panel.add(button);
panel.add(label);
frame.add(picture);
frame.add(panel, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Maynooth Thing");
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args)
{
new GUI();
}
@Override
public void actionPerformed(ActionEvent e)
{
count++;
label.setText("Number of clicks: " + count);
}
}
Java会在实际工作目录中搜索镜像,即java启动的目录。 这取决于它是如何启动的——如果是命令行,它与命令行使用的相同; IDE 通常有一些设置(例如 eclipse 的默认设置是项目主目录)。 打印它的简单方法System.out.println(new java.io.File("").getAbsolutePath());
不幸的是,如果找不到文件, new ImageIcon
不会引发异常 - 如果找不到,图标大小( getIconHeight()
或getIconWidth()
)将设置为-1
。 ImageIO
更适合从文件中读取图像,因为图像不是应用程序的一部分; 否则,图像是应用程序的一部分,应使用来自 class 或 class 加载程序的getResource()
。
.java
文件的位置在执行期间根本不相关。 如果使用来自 class 加载器的getResource
方法(推荐。特别是如果应该从 JAR 读取图像/文件) .class
文件(类路径)的位置将很重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.