所以我正在尝试制作Tic-Tac-Toe游戏,而且我对JFrames,面板,几乎所有的GUI内容都是全新的。我希望这不会被认为是重复的,因为我扫描了这个网站几个小时试图找到答案。这很好,因为我对此有了新的认识,可能有一个答案,但我不明白。无论如何,错误在标题中说明,我的目标是弄清楚如何检测单击哪个按钮,然后使用if / else语句通过使用方法来控制接下来发生的事情。我意识到一些导入的内容没有被使用,但我计划在他们进一步使用该程序时可能会使用它们。再一次,我是新手,以及周围的一切。我的大部分知识都是自学成才,所以对任何帮助都表示赞赏。
import java.util.Scanner;
import java.lang.Object;
import java.awt.Component;
import java.awt.Container;
import java.awt.Window;
import java.awt.Frame;
import javax.swing.JFrame;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class ticTacToe implements ActionListener //uses action listener because of the use of buttons, so it needs to know when the buttons are clicked
{
public static JFrame menuFrame = new JFrame("Tic-Tac-Toe");
public static JPanel board = new JPanel(), menu = new JPanel();
public static JButton instruct = new JButton("Instructions"), pVP = new JButton("Player VS. Player"), pVC = new JButton("Player VS. Computer");
public static void main (String[]args)
{
menu();
}
public static void menu ()//the main menu of the game
{
menu.setLayout(new FlowLayout());//arranges the layout of the buttons on the panel
menu.add(instruct);//adds the instruction button
menu.add(pVP);//adds the player vs player button
menu.add(pVC);//adds the player vs computer button
menuFrame.add(menu);//creates the panel
menuFrame.setSize(450, 78);
menuFrame.setLocationRelativeTo(null);//sets the location to the centre of the screen
menuFrame.setVisible(true);//makes the menu visible
}
public void actionPerformed(ActionEvent actionEvent) {
instruct.addActionListener(new ActionListener());
System.out.println(actionEvent.getActionCommand());
}
}
答案 0 :(得分:2)
这是instruct.addActionListener(new ActionListener());
ActionListener
是您必须在子类中实现的接口。
为了使其有意义,最简单的解决方法是将该行更改为instruct.addActionListener(this)
,并将其移动到构造函数中,因为您的类已经实现了ActionListener
。如果您使用此解决方案,您的游戏逻辑代码将被移动到actionPerformed()
类的Menu()
方法中。或者你可以创建一个新类来实现它,游戏逻辑将进入那里:
public class TicTacToeListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
// game logic here
}
}
public class ticTacToe implements ActionListener {
public void actionPerformed(ActionEvent actionEvent) {
instruct.addActionListener(new TickTacToeListener);
System.out.println(actionEvent.getActionCommand());
}
}