2

我的问题是这样的:

(游戏:显示井字棋盘)显示一个包含九个标签的框架。标签可以显示X的图像图标或O的图像图标。显示什么是随机决定的。使用Math.random()方法生成整数01,对应于显示XO图像图标。这些图像位于x.gifo.gif文件中

我遇到的问题是 imgaes 不会在程序中显示。当我运行它时,程序会生成一个空帧。我的猜测是图像文件的位置一定有问题。

我已经从这本书的出版商那里下载了一个 .zip 文件,我使用的是(Liang 的 Java 编程简介),看起来图像应该包含这个文件。但它没有。所以我在网上找到了相同的 .gif 并下载了它们。现在我想知道我如何设置正确的位置。

我认为代码本身应该没问题。反正就是这里。

import java.awt.GridLayout;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class TicTacToe extends JFrame {
private ImageIcon cross = new ImageIcon("image/x.gif");
private ImageIcon not = new ImageIcon("image/o.gif");

public TicTacToe() {
    setLayout(new GridLayout(3, 3));

    for (int i = 0; i < 9; i++) {
        int mode = (int) (Math.random() * 3.0);
        if (mode == 0)
            add(new JLabel(this.cross));
        else if (mode == 1)
            add(new JLabel(this.not));
        else
            add(new JLabel());
    }
}

public static void main(String[] args) {
    TicTacToe frame = new TicTacToe();
    frame.setTitle("TicTacToe");
    frame.setSize(200, 200);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(3);
    frame.setVisible(true);
  }
}

另一个问题,将使用这个:

import java.awt.*;
import javax.swing.*;

而不是这个:

import java.awt.GridLayout;
import javax.swing.ImageIcon;

坏事?我在想,如果认为我的讲师会发现总是导入所有而不是我需要的单独导入会很懒惰。

提前 - 谢谢。

4

2 回答 2

1

这些语句将编译并执行

private ImageIcon cross = new ImageIcon("image/x.gif");
private ImageIcon not = new ImageIcon("image/o.gif");

如果您在主项目文件夹中有一个图像子文件夹,并且该图像子文件夹位于构建路径上。这些 ImageIcon 应该以自己的方法构建,因此如果 gif 丢失,您可以处理生成的错误。

我读这样的图像文件。

    try {
        img = ImageIO.read(new File("graphics/close_0.jpg"));
        remoteController = ImageIO.read(new File("graphics/pilot.png"));
    } catch (IOException e) {
        e.printStackTrace();
    }

这样,您的代码就不必等待图像加载。

如果您使用像 Eclipse 这样的集成开发环境 (IDE),Eclipse 将从代码中生成以下语句。

import java.awt.GridLayout;
import javax.swing.ImageIcon;  

如果您不使用 IDE,则以下语句是可以的。您不想花费大量时间手动输入导入语句。

import java.awt.*;
import javax.swing.*;
于 2013-11-10T15:08:50.237 回答
0

您的图标文件必须位于名为“images”的文件夹中,并且该文件夹必须位于运行程序的默认目录中。

于 2013-11-10T15:02:00.973 回答