这是我从一本名为Java In Easy Steps的书中获取GUI的基本示例,我按照示例实现了代码,但图像没有出现。我需要做些什么来使它出现,是因为URL getClassLoader?
理想情况下,我希望能够将文件保存到我的工作区,并将该文件用作GUI的一部分。
import javax.swing.*;
class Buttons extends JFrame {
JPanel pnl = new JPanel();
ImageIcon tick = new ImageIcon("tickURL");
ImageIcon cross = new ImageIcon("crossURL");
JButton btn = new JButton("Click Me");
JButton tickBtn = new JButton(tick);
JButton crossBtn = new JButton("STOP", cross);
ClassLoader ldr = this.getClass().getClassLoader();
java.net.URL tickURL = ldr.getResource("tick.png");
java.net.URL crossURL = ldr.getResource("cross.png");
public Buttons(){
super("Swing Window");
setSize( 500, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
add(pnl);
setVisible(true);
pnl.add(btn);
pnl.add(tickBtn);
pnl.add(crossBtn);
}
public static void main(String[]Args){
Buttons gui = new Buttons();
}
}
答案 0 :(得分:1)
ClassLoader ldr = this.getClass().getClassLoader();
java.net.URL tickURL = ldr.getResource("tick.png");
java.net.URL crossURL = ldr.getResource("cross.png");
JPanel pnl = new JPanel();
ImageIcon tick = new ImageIcon(tickURL); // <-- a URL is needed here, not a string
ImageIcon cross = new ImageIcon(crossURL); // same here
JButton btn = new JButton("Click Me");
JButton tickBtn = new JButton(tick);
JButton crossBtn = new JButton("STOP", cross);
就这么简单。
答案 1 :(得分:1)
我是一个Java新手,正在翻阅同一本书中的相同代码,结果相同(两个代码块都没有图标)。对于无能为力(如moi),这本书似乎说这两个图标是Java默认包的一部分,当然不是这样。
答案是这两个.png文件包含在本书可用的下载中,作者假设您已将文件下载到当前目录中,因此代码会看到它们。
因此,当图标可用时,上述两种方法确实有效。