gpt4 book ai didi

java - WindowLIstener - token 后应有标识符

转载 作者:行者123 更新时间:2023-11-30 07:25:25 24 4
gpt4 key购买 nike

我正在根据 CodeReview.SE 问题的建议重构我的代码。 https://codereview.stackexchange.com/questions/126634/button-clicking-ui-for-a-game

研究:

  1. https://docs.oracle.com/javase/tutorial/uiswing/events/windowlistener.html
    如何编写窗口监听器
  2. Java syntax error on token.... Identifier expected after this token
    大多数其他相关的 SO 问题都与此类似。对于这种情况,我找不到问题。

我知道您必须创建一个在其他地方调用的方法。 doSomething 代码不能仅仅位于类级别。

错误:
我遇到了错误

Syntax error on token "saveGameOnClose", Identifier expected after this token

以内

FRAME.addWindowListener(new WindowAdapter() {
SaveGameData.saveGameOnClose();
});

我的主课。

主类:

public Game() {
javax.swing.SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {

NewGameMessage.LoadNewGameMessage();

try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); }
catch (UnsupportedLookAndFeelException ex) {
ex.printStackTrace(); }
catch (IllegalAccessException ex) {
ex.printStackTrace(); }
catch (InstantiationException ex) {
ex.printStackTrace(); }
catch (ClassNotFoundException ex) {
ex.printStackTrace(); }

FRAME.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
FRAME.getContentPane().add(new addComponentsToPane());

FRAME.setSize(300, 500);
FRAME.setLocationRelativeTo(null);
FRAME.setVisible(true);
FRAME.setResizable(false);

FRAME.addWindowListener(new WindowAdapter() {
SaveGameData.saveGameOnClose();
});
}
});
}

SaveGameData 类:

public class SaveGameData {

// Game.FRAME.addWindowListener(new WindowAdapter() {
static void saveGameOnClose(WindowEvent e) {
BufferedWriter writerOut = null;
try {
writerOut = new BufferedWriter(new FileWriter("res/saved_game_data.txt"));
writerOut.write(String.valueOf(Game.biDamageOutput) + "\r\n" +
String.valueOf(Game.biPoints) + "\r\n" +
String.valueOf(Game.biNewPoints) + "\r\n" +
String.valueOf(Game.biSpentPoints) + "\r\n" +
String.valueOf(Game.biKnifeCount) + "\r\n" +
String.valueOf(Game.biPistolCount) + "\r\n" +
String.valueOf(Game.biShotgunCount) + "\r\n" +
String.valueOf(Game.biRifleCount) + "\r\n" +
String.valueOf(Game.biRLauncherCount) + "\r\n" +
String.valueOf(Game.intTotalClicks));
writerOut.close();
} catch (Exception e1) {
System.err.println("Error: " + e1.getMessage());
}
};
}

个人对问题的思考:

我错误地编写了窗口监听器。但我试图对每个值得注意的操作(加载、保存、UI)进行单独分类,作为更多地了解我的代码的类、可持续性和可重用性的一部分。或者我可能只是缺少一个支架或支架。

谢谢。

最佳答案

您的方法 SaveGameData.saveGameOnClose(WindowEvent e) 需要一个 WindowEvent 类型的参数,但您在不带任何参数的情况下调用它SaveGameData.saveGameOnClose(); 也没有实现任何监听器方法

应该是这样的

FRAME.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
SaveGameData.saveGameOnClose(e);
}

});

关于java - WindowLIstener - token 后应有标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36882241/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com