【发布时间】:2023-04-07 00:46:01
【问题描述】:
我目前正致力于在 Java GUI 中编写一个简单版本的井字游戏。我在设置比赛场地时遇到问题。按钮代表玩家可以按下以获得“X”或“O”的方块。
//Playing field class
import java.awt.*;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.Color;
class TicTacToeFrame extends JFrame {
private JFrame game = new JFrame("Tic Tac Toe");
private JPanel pane1, pane2, pane3;
Button button = new Button();
public TicTacToeFrame() {
game.setSize(300, 300);
game.setVisible(true);
game.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pane1 = new JPanel();
pane2 = new JPanel();
pane3 = new JPanel();
add(pane1, BorderLayout.NORTH);
add(pane2, BorderLayout.CENTER);
add(pane3, BorderLayout.SOUTH);
pane1.setBackground(Color.white);
pane2.setBackground(Color.white);
pane3.setBackground(Color.white);
placeButton();
}
public void placeButton() {
for (int i = 1; i < 10; i++) {
if (i < 4) {
pane1.add(button.getButton());
}
else if (3 < i && i < 7) {
pane2.add(button.getButton());
}
else if (6 < i && i < 10) {
pane3.add(button.getButton());
}
}
}
}
//Button class
import javax.swing.JButton;
import java.awt.event.ActionListener;
public class Button {
private JButton button;
private int number = 0;
private String player;
public Button() {
button = new JButton();
}
public String getPlayer() {
return player;
}
public JButton getButton() {
return button;
}
public void changePlayer() {
for (int i = 1; i < 10; i++) {
if (number % 2 == 0) {
player = "X";
}
else {
player = "O";
}
number++;
}
}
}
当我在 main 中运行程序时,我收到了框架,但是,没有放置应该代表正方形的按钮。帮忙?
【问题讨论】:
-
在添加按钮后添加窗格,并在所有内容创建并添加到框架后显示板,也尝试重新绘制框架
-
您只是将 one JButton 添加到整个网格中,因为您对
getButton()的调用会返回一个按钮。您需要为每个需要它的位置创建一个新的 JButton,而您并没有这样做。 -
@HovercraftFullOfEels “你只在整个网格中添加了一个 JButton” 关闭 hombre,但没有 sombrero。
Button button = new Button();OP:应该是JButton button = new JButton();(但使用 9 个按钮,9 个方格中的每个方格一个)。 编辑: 天啊!没有意识到 OP 有一个扩展JButton的类Button。 :P OP:另一个不使用现有类的名称作为自定义类的好理由。
标签: java swing user-interface