我是Java的初学者,我按照教程编写了这个程序(是的,我是初学者),当我在Eclipse上运行它时,它运行得很好。它在我编码的计算机上运行得很好。但是,如果我将它发送到另一台计算机(只是.jar文件)并运行它,它会失败,因为它找不到图标。这是我所拥有的一切。我正在使用的图标与该程序的所有类文件一起保存在bin文件夹中。出于隐私原因,我用“WORDS”替换了某些行。
我遵循的教程分为两部分:
第1部分 - https://buckysroom.org/videos.php?cat=31&video=18027
第2部分 - https://buckysroom.org/videos.php?cat=31&video=18028
我的主要课程(我称之为苹果,因为教程确实如此)。
import javax.swing.JFrame;
public class apples {
public static void main(String[] args) {
Gui go = new Gui();
go.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
go.setSize(1920,1080);
go.setVisible(true);
}
}
现在我的第二堂课“Gui”:
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
public class Gui extends JFrame {
private JButton custom;
public Gui () {
super("WORDS");
setLayout(new FlowLayout());
Icon b = new ImageIcon(getClass().getResource("b.png"));
custom = new JButton(null, b);
custom.setToolTipText("WORDS");
add(custom);
HandlerClass handler = new HandlerClass();
custom.addActionListener(handler);
}
private class HandlerClass implements ActionListener {
public void actionPerformed(ActionEvent event) {
JOptionPane.showMessageDialog(null, String.format("WORDS", event.getActionCommand()));
JOptionPane.showMessageDialog(null, String.format("WORDS", event.getActionCommand()));
JOptionPane.showMessageDialog(null, String.format("WORDS", event.getActionCommand()));
JOptionPane.showMessageDialog(null, String.format("WORDS", event.getActionCommand()));
}
}
}
非常感谢您的帮助!
答案 0 :(得分:2)
值得一读Loading Images Using getResource,详细解释这些内容以及从jar中加载图片。
您可以根据图片位置尝试任何一种。
// Read from same package
ImageIO.read(getClass().getResourceAsStream("b.png"));
// Read from src/images folder
ImageIO.read(getClass().getResource("/images/b.png"))
// Read from src/images folder
ImageIO.read(getClass().getResourceAsStream("/images/b.png"))