【发布时间】:2021-07-21 20:57:28
【问题描述】:
我正在尝试用 java 制作井字游戏,但我的 GUI 只是没有显示。它制作了一块棋盘,您可以按下按钮来玩井字游戏。我是java新手,所以我不知道出了什么问题。它没有错误,我使用 repl。怎么了?
import javax.swing.JFrame;
import java.awt.event.ActionListener;
import java.awt.Color;
import java.awt.event.ActionEvent;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import java.awt.GridLayout;
public class Main extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private JPanel panel = new JPanel();
private XOButtons[] buttons = new XOButtons[9];
private int turn = 0;
@Override
public void actionPerformed(ActionEvent actionEvent) {
XOButtons source = (XOButtons)actionEvent.getSource();
if(turn == 0){
source.toggleX();
setTitle("O Turn");
} else if(turn == 1){
source.toggleO();
setTitle("X's Turn");
}
turn = (turn + 1) % 2;
}
public static void main(String[] args) {
new TicTacToe();
}
public void TicTacToe() {
setTitle("Tic Tac Toe");
setSize(600,600);
setLocation(100,100);
getContentPane().setBackground(Color.CYAN);
setDefaultCloseOperation(EXIT_ON_CLOSE);
panel.setLayout(new GridLayout(3,3,5,5));
panel.setBackground(Color.BLUE);
for(int i=0; i < buttons.length; i++) {
buttons[i] = new XOButtons();
buttons[i].addActionListener(this);
panel.add(buttons[i]);
}
add(panel);
setVisible(true);
}
}
这是我的第二个 java 文件:
import javax.swing.JFrame;
import java.awt.event.ActionListener;
import java.awt.Color;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.ImageIcon;
public class XOButtons extends JButton {
private static final long serialVersionUID = 1L;
private ImageIcon xIcon = new ImageIcon(getClass().getResource("x.png"));
private ImageIcon oIcon = new ImageIcon(getClass().getResource("o.png"));
public void toggleX() {
if(getIcon() == null) {
setIcon(xIcon);
} else {
setIcon(null);
}
}
public void toggleO() {
if(getIcon() == null) {
setIcon(oIcon);
} else {
setIcon(null);
}
}
}
另外,我已经加载了 x.png 和 o.png。
【问题讨论】:
-
该代码甚至无法编译。没有构造函数甚至类匹配
new TicTacToe(); -
我应该用 JFrame 之类的东西替换它吗?
-
1) 为了尽快获得更好的帮助,edit 添加minimal reproducible example 或Short, Self Contained, Correct Example。 2) 使用逻辑一致的缩进代码行和块的形式。缩进是为了让代码流更容易理解!大多数 IDE 都有专门用于格式化代码的键盘快捷键。
-
3) 获取 MRE / SSCCE 图像的一种方法(如 my answer 中所示)是热链接到 this Q&A 中看到的图像。例如。 this answer 中的代码热链接到嵌入在this question 中的图像。
标签: java swing user-interface