私はCodeReview.SEの質問のアドバイスに基づいて自分のコードをリファクタリングしています。 https://codereview.stackexchange.com/questions/126634/button-clicking-ui-for-a-gameWindowLIstener - トークン後に予想される識別子
研究:SOの質問はこれに類似している関係づけ
他のほとんどのウィンドウリスナーを作成する方法
- https://docs.oracle.com/javase/tutorial/uiswing/events/windowlistener.html
。私はこの状況で質問を見つけることができません。
他の場所で呼び出す方法を作成する必要があることはわかっています。 doSomethingコードは、単にクラスレベルに座ることはできません。
エラー:
は私が私のメインクラスの
FRAME.addWindowListener(new WindowAdapter() {
SaveGameData.saveGameOnClose();
});
内のエラー
Syntax error on token "saveGameOnClose", Identifier expected after this token
に遭遇しています。
メインクラス:
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ごとにクラス分けしようとしています。それとも、括弧や括弧で囲まれていないかもしれません。
ありがとうございました。ありがとう
のようなものでなければならないこと!私はこれに近いものでしたが、それとクラスの間で混乱していました。私はsaveGameOnClose()のメソッドを作成しようとし続け、それが正しくないことを知っていました。 タイマー終了時に回答として受け入れます。 –
それはあなたを助けてくれてうれしいです。楽しいコーディングを持っている:) – Sanjeev