当前位置: 首页 > 知识库问答 >
问题:

无法获取ImageIcon以查找我的从C驱动器查找我的图像

上官和韵
2023-03-14

简单的tic-tac-toe分为两类。我知道使用URL,但我想让它正常工作。这是到目前为止的节目。我大部分是从youtube教程中获得的,但现在错误消息

异常线程"main"java.lang.NullPointerExc0019

在爪哇。桌面/javax。摆动图像图标。(来源不明)

在XOButton。XOButton.java:17)

在TicTacToe。TicTacToe.java:24)

在提克塔托。main(TicTacToe.java:13)

import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.GridLayout;



public class TicTacToe extends JFrame{

JPanel p = new JPanel();
XOButton buttons[] = new XOButton [9];

public static void main(String[] args) {
    new TicTacToe();
}

public TicTacToe() {
    super ("TicTacToe");
    setSize(400,400);
    setResizable(false);
    setDefaultCloseOperation(EXIT_ON_CLOSE);

    p.setLayout(new GridLayout(3,3));
    for (int i=0; i<9; i++) {
        buttons[i] = new XOButton();
        p.add(buttons[i]);
    }

    add(p);

    setVisible(true);
}

}

下一步:

import javax.swing.JButton;
import javax.swing.ImageIcon;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class XOButton extends JButton implements ActionListener{

ImageIcon X,O;
byte value = 0;
/*
 0:nothing
 1:X
 2:O
 */

public XOButton() {
    X = new ImageIcon(this.getClass().getResource("C:\\Users\\mattt\\Pictures\\X.PNG"));
    O = new ImageIcon(this.getClass().getResource("C:\\Users\\mattt\\Pictures\\0.PNG"));
    this.addActionListener(this);
}


public void actionPerformed(ActionEvent e) {
    value++;
    value %= 3;

    switch(value) {
    case 0:
        setIcon(null);
        break;
    case 1:
        setIcon(X);
    case 2:
        setIcon(O);
    }
}

}

共有1个答案

鲜于阳成
2023-03-14

您的代码中存在一些问题。

1)为了防止nullpointerExcure,你必须将图像添加到同一个包中。

public XOButton() {
    X = new ImageIcon(this.getClass().getResource("X.PNG"));
    O = new ImageIcon(this.getClass().getResource("0.PNG"));
    this.addActionListener(this);
}

2) 在switch case语句中,case1和case2没有break语句。

public void actionPerformed(ActionEvent e) {
    value++;
    value %= 3;

    switch(value) {
    case 0:
        setIcon(null);
        break;
    case 1:
        setIcon(X);
        break;
    case 2:
        setIcon(O);
        break;
    default:
        break;
    }
}
 类似资料:
  • 问题内容: 我正在为当前应用程序开发软件安装程序。需要将其安装到系统硬盘上。我应该如何检测系统驱动器并返回来自Python的字母? win32扩展会有用吗?预装Python的os模块怎么样? 问题答案: 这是如何在Win32平台上返回系统驱动器的盘符: 上面的代码段返回系统驱动器号。就我而言(大多数情况下是在Windows上)C:

  • 问题内容: 对于一个我正在从事的项目。我需要在文件系统上寻找可执行文件。对于UNIX派生类,我假定用户将文件包含在强大的$ PATH变量中,但是Windows上没有这样的东西。 我可以放心地假设该文件在文件系统中的深度最多为2个级别,但是我不知道它将是什么驱动器。我必须尝试所有驱动器,但无法弄清楚如何列出所有可用的驱动器(已为其分配了字母)。 有什么帮助吗? 编辑: 我知道有%PATH%变量,但是

  • 我是斯坦纳树问题领域的初学者,我需要确定我的问题的名称,如果存在:给定无向、无权重、根图和一些顶点(模板节点)。我想构建树,其中所有的终端节点都是叶子,具有最小数量的斯坦纳顶点。有谁能为我找出这个问题的类(名称)以便阅读更多关于这个的信息。谢谢你们所有人

  • 问题内容: 我正在用Java编写数据库验证工具,并具有首选项屏幕,以便用户可以定义其数据库连接。该工具至少应能够应付DB2,Oracle,Postgresql和Mysql。 我真正想要的是能够向用户提供他们已安装的jdbc驱动程序列表,作为此过程的一部分。 任何人都可以提供用于发现已安装的JDBC驱动程序的代码段吗? 问题答案: 到目前为止,您需要扫描整个类路径(和子文件夹)以查找实现类的类。这样

  • 问题内容: 我有这个小程序,它需要在他们的“我的文档”文件夹中创建一个小.txt文件。这是我的代码: 问题是,如果其他人使用它,如何将其更改为他们的帐户名? 问题答案: 使用,请参阅http://docs.python.org/library/os.path.html 例如 根据文档,这在Unix和Windows上均可使用。 编辑:由于Sven的评论,正斜杠。

  • 我试图给我的界面一个新的功能,但我遇到了一些障碍。当鼠标移动时,我想放大JLabel上的图像。以下是我的JLabels的外观: 代码一直在继续。我想创建一个函数并将其添加到mouseListener中,这样所有的行为都将相同。我想实现这一点: 但是我不知道我可以使用这个,因为java说我需要图像来创建我的放大图像图标 如何从代码中检索用于打包JLabel的图像。任何帮助都将不胜感激。