java - 我的 GUI 中使用 ActionListener 时出现错误

标签 java user-interface syntax-error actionlistener

所以,我正在开发一个项目,我的 GUI 似乎出现了 4 个错误。这些错误指向我添加操作监听器的位置。我不确定如何解决这个问题。这是我的代码:

import javax.swing.*;
import java.awt.*;
public class GUIDisplay extends JFrame implements Display {
    //declearing global variables and J items.
    protected ReversiBoard board;
    protected JLabel rowL, colL, gameOverLabel1,gameOverLabel2,message1Label,
            message2Label;
    protected JTextField rowField, columnField;
    protected JButton moveButton, saveButton, startButton, quitButton;
    protected Canvas myCanvas;
    protected GUIDisplay myDisplay = new GUIDisplay(board);
    public GUIDisplay(ReversiBoard inBoard){
        board = inBoard;
    }
    //Simple message
    public void displayMessage(String message){
        message1Label = new JLabel(message);
    }
    //player status such as your turn
    public void displayStatus(Player inPlayer, String message){
        message2Label = new JLabel(inPlayer.getName() + ", " + message);
    }
    //end game messages
    public void displayWinner(Player winner){
        if (winner == null)
        {
            gameOverLabel1 = new JLabel("Tie Game!");
        }
        else
        {
            gameOverLabel2 = new JLabel("Winner: " + winner);
        }
    }
    public void drawBoard(Graphics g){
        //set controls the scale of the board
        int set = 60;
        int size = board.getSize();
        //creating umbered lines
        for (int c = 1; c <= size + 1; c++){
            g.drawString("" + (c - 1), set/2, c*set + set/2);
            g.drawString("" + (c - 1), c * set + set/2, set/2);
        }
        //places pieces
        for(int c = 0; c < size; c++) {
            for(int i = 0; i < size; i++){
                int p = board.getPiece(i, j).getType();
                if (p != Piece.BLANK){
                    if (p == Piece.BLACKPIECE){
                        g.setColor(Color.BLACK);
                    }
                    else{
                        g.setColor(Color.WHITE);
                    }
                    g.fillOval(set + set * i  + 10, set + set * c + 10,
                               set - 20, set - 20);
                }
            }
        }
    }
    //gets the move
    public Move getMove(Player p){
        int row, col;
        row = Integer.parseInt(rowField.getText());
        col = Integer.parseInt(columnField.getText());
        Move m = new Move(p, row, col);
        return m;
    }
    //Setting for graphics
    public void setGraphics(){
        Container pane = getContentPane();
        pane.setLayout(new BorderLayout());
        myCanvas = new Canvas(){
            public void boardStart(Graphis g){
                super.paint(g);
                drawBoard(g);
            }
        
        };
        //Setting buttons
        moveButton = new JButton("Move!");
        saveButton = new JButton("Save!");
        startButton = new JButton("Start!");
        quitButton = new JButton("Quit!");
        //Seting labels
        rowL = new JLabel("Row");
        colL = new JLabel("Column");
        gameOverLabel1 = new JLabel("");
        gameOverLabel2 = new JLabel("");
        message1Label = new JLabel("");
        message2Label = new JLabel("");
        //Setting text fields
        rowTF = new JTextField();
        columnTF = new JTextField();
        //Adding canvas
        pane.add(myCanvas, BoarderLayout.CENTER);
        //Modifyibg Canvas
        myCanvas.setBackground(Color.GREEN);
        //Adding JPanel
        JPanel paneComp = new JPanel();
        paneComp.setLayout(new GridLayout(0, 2));
        paneComp.add(gameOverLabel1);
        paneComp.add(gameOverLabel2);
        paneComp.add(message1Label);
        paneComp.add(message2Label);
        paneComp.add(rowL);
        paneComp.add(rowTF);
        paneComp.add(colL);
        paneComp.add(columnTF);
        paneComp.add(moveButton);
        paneComp.add(saveButton);
        paneComp.add(startButton);
        paneComp.add(quitButton);
        //Setting non-start items to false
        moveButton.setEnabled(false);
        saveButton.setEnabled(false);
        rowTF.setEnabled(false);
        columnTF.setEnabled(false);
        //Adding Listeners
        moveButton.addActionListener(new GameActionListener);
        saveButton.addActionListener(new GameActionListener);
        startButton.addActionListener(new GameActionListener);
        quitButton.addActionListener(new GameActionListener);
        //Setting bascs for the GUI
        setTitle("Reversi Game!");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setSize(1000, 800);
        pane.setBackground(Color.GRAY);
        
        
    }
    //inner class for action listener
    class GameActionListener implements ActionListener {
        public void actionPerformed(ActionEvent event){
            String command = event.getActionCommand();
            //quit game
            if (command == "Quit!"){
                System.exit(0);
            }
            else if (command == "Start!"){
                //Enable the buttons for use
                rowTF.setEnabled(true);
                columnTF.setEnabled(true);
                moveButton.setEnabled(true);
                saveButton.setEnabled(true);
                startButton.setEnabled(false);
            }
            //save game
            else if (command == "Save!"){
                board.saveGame(JOptionPane.showInputDialog(this, "Game Name"));
                displayMessage("Saved!");
            }
            //makes moce
            else if (command == "Move!"){
               Move m = getMove(board.getCurrentPlayer());
               //test if move is legal
               if(board.moveLegal(m) == true){
                   board.makeMove(m);
                   board.setCurrentPlayer(board.getNExtPlayer());
                   myCanvas.repaint();
               }
               //illegal move
               else
                   displayStatus("Illegal Move!");
               displayStatus(board.geCurrentPlayer(), "Your Move!");
               //game over
               if (board.gameOver()){
                   Player p = board.getWinner();
                   displayWinner(p);
                   //Setting items to false when game ends
                   rowTF.setEnabled(false);
                   columnTF.setEnabled(false);
                   moveButton.setEnabled(false);
                   saveButton.setEnabled(false);
                   startButton.setEnabled(false);
                       
               }
               //Skip turn
               if (board.moveExist(board.getCurrentPlayer()) == false)
                   board.setCurrentPlayer(board.getNextPlayer());
            }
        }
    }
}

这是我在编译时收到的错误: ----jGRASP 执行:javac -g GUIDisplay.java

GUIDisplay.java:111: 错误:应为“(”或“[” moveButton.addActionListener(new GameActionListener); ^ GUIDisplay.java:112: 错误:预期为“(”或“[” saveButton.addActionListener(new GameActionListener); ^ GUIDisplay.java:113: 错误:预期为“(”或“[” startButton.addActionListener(new GameActionListener); ^ GUIDisplay.java:114: 错误:预期为“(”或“[” quitButton.addActionListener(new GameActionListener); ^ 4 个错误

----jGRASP wedge2:进程的退出代码为 1。 ----jGRASP:操作完成。

非常感谢您的帮助。

最佳答案

GameActionListener 是一个类,因此当您创建新实例时,您可能需要像这样调用构造函数 new GameActionListener()

关于java - 我的 GUI 中使用 ActionListener 时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26977403/

相关文章:

xml - 如何添加外部链接到XML文档(DTD模式)?

java - okhttp 内容长度为 -1 大文件

java - JUNIT 条件测试可能吗?

java - 从列表中删除重复组合

c# - C#更新 Access 中的日期时间列

oracle - PLS-00306 : wrong number or types of arguments in call to 'OUTPUT_ARRAY'

java - 如何使用进程生成器运行两个不同的命令

Android: android:layout_width=wrap_content 但不能小于X dp?

c++ - Qt:带有可移动小部件的窗口

java GUI布局建议