gpt4 book ai didi

java - 在标签中显示带有图像图标的井字棋盘

转载 作者:行者123 更新时间:2023-11-30 11:26:16 24 4
gpt4 key购买 nike

我的问题是:

(Game: display a tic-tac-toe board) Display a frame that contains nine labels. A label may display an image icon for X or and image icon for O. What to display is randomly decided. Use the Math.random() method to generate an integer 0 or 1, which corresponds to displaying an X or O image icon. These images are in the files x.gif and o.gif

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

我已经从我正在使用的书(Liang 的 Java 编程简介)的出版商那里下载了一个 .zip,它似乎应该包含图像。但它没有。所以我在网上找到了相同的 .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;

做一件坏事?我在想,如果认为我的讲师会觉得总是导入所有而不是我需要的单独的是懒惰的。

提前 - 谢谢。

最佳答案

这些语句将编译并执行

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

如果您在主项目文件夹之外有一个图像子文件夹并且图像子文件夹在构建路径上。这些 ImageIcons 应该在它们自己的方法中构建,因此如果 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.*;

关于java - 在标签中显示带有图像图标的井字棋盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19891144/

24 4 0