JPanel - 带按钮的窗口

时间:2012-01-23 18:24:31

标签: java swing jframe jpanel

这是我从一本名为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();

    }

}

2 个答案:

答案 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. 使用classLoader加载您的资源(如果它们在您的类路径中),
  2. 使用这些资产创建您的图标
  3. 使用这些图标创建按钮
  4. 就这么简单。

答案 1 :(得分:1)

我是一个Java新手,正在翻阅同一本书中的相同代码,结果相同(两个代码块都没有图标)。对于无能为力(如moi),这本书似乎说这两个图标是Java默认包的一部分,当然不是这样。

答案是这两个.png文件包含在本书可用的下载中,作者假设您已将文件下载到当前目录中,因此代码会看到它们。

因此,当图标可用时,上述两种方法确实有效。

可在此处下载:http://ineasysteps.com/resource-centre/downloads/