【发布时间】:2016-02-07 01:41:17
【问题描述】:
我正在制作一个井字游戏,并将我的 GUI 设置在它自己的类中,以及一个用于游戏逻辑的单独类和一个单独的主类。我需要做的是设置按钮事件,因此当玩家单击按钮时,图像图标将变为“X”或“O”。如何在我的 GUI 类中设置 ActionListener 但能够在我的游戏类中更改事件?
这是我目前的代码:
GUI类:
import javax.swing.*;
import java.awt.event.*;
public class TicTacToeGui {
private JFrame frame;
private JPanel panel;
public JButton btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
public void ticTacToeGui() {
createForm();
createButtons();
frame.add(panel);
frame.setVisible(true);
}
public void createForm() {
frame = new JFrame();
frame.setTitle("Tic Tac Toe");
frame.setSize(618, 647);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel = new JPanel();
panel.setLayout(null);
}
public void createButtons() {
btn1 = new JButton();
btn1.setBounds(0, 0, 200, 200);
panel.add (btn1);
btn2 = new JButton();
btn2.setBounds(200, 0, 200, 200);
panel.add (btn2);
btn3 = new JButton();
btn3.setBounds(400, 0, 200, 200);
panel.add (btn3);
btn4 = new JButton();
btn4.setBounds(0, 200, 200, 200);
panel.add (btn4);
btn5 = new JButton();
btn5.setBounds(200, 200, 200, 200);
panel.add (btn5);
btn6 = new JButton();
btn6.setBounds(400, 200, 200, 200);
panel.add (btn6);
btn7 = new JButton();
btn7.setBounds(0, 400, 200, 200);
panel.add (btn7);
btn8 = new JButton();
btn8.setBounds(200, 400, 200, 200);
panel.add (btn8);
btn9 = new JButton();
btn9.setBounds(400, 400, 200, 200);
panel.add (btn9);
}
}
游戏类:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.Icon;
import javax.swing.ImageIcon;
public class OnePlayer {
TicTacToeGui gui = new TicTacToeGui();
public void gameStart() {
gui.btn1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
Icon i = new ImageIcon("x.png");
gui.btn1.setIcon(i);
}
});
}
}
【问题讨论】:
-
更改事件是什么意思?您能否更具体地说明您想要实现的目标?
-
我需要能够使用游戏类中的代码更改 GUI 类中按钮的图像图标。
标签: java