java - JPanel - 带按钮的窗口

标签 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();

    }

}

最佳答案

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. 使用类加载器加载您的资源(如果它们位于您的类路径中),
  2. 使用这些资源创建您的图标,
  3. 使用这些图标创建按钮

就这么简单。

关于java - JPanel - 带按钮的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8976626/

相关文章:

Java Applet 大小行为与 JFrame 大小行为

Java Lambda 多次求和

java - 重构java方法以降低圈复杂度

java - 在jboss服务器7.0中部署war文件

java - 如何将文本文件内容导入 Java 应用程序中的 JTextArea?

java - JTable 彩色行标题出现在表格未出现的位置

java - 我正在尝试制作一个显示元素列表的 JFrame,每个元素代表目录中的一个文件

java - Oracle 无效标识符不理解字符串

java - JPanel 不显示

JAVA Action 执行不工作