サーバーとクライアント(マルチクライアント)でカードゲームを書きます。ゲームが始まったり、ゲームが終了したら、毎秒確認する必要があります。だから私はそれをチェックするjava.swing.timerを書く。しかし、ゲーム開始時にJPanelの可視性を設定しません。 (悪い英語のため申し訳ありませんが) JavaスイングタイマーでJPanelの可視性が設定されていません
public void checkGameState() {
ActionListener action;
timer = new Timer(delay, (ActionEvent e) -> {
try {
boolean isEnd = checkIfGameIsClose();
if (isEnd == true) {
System.out.println("---->"+isEnd);
mainGamePanel.setVisible(false);
waitRoomPanel.setVisible(true);
availability_button.setText("Ready");
availability_button.setBackground(Color.red);
availability_status = false;
}
} catch (IOException ex) {
Logger.getLogger(ClientFrame.class.getName()).log(Level.SEVERE, null, ex);
}
try {
boolean isStart = checkIfGameIsOpen();
if (isStart == true) {
System.out.println("---->"+isStart);
mainGamePanel.setVisible(true);
waitRoomPanel.setVisible(false);
clientConnectToServer.isEndTheGame();
}
} catch (IOException ex) {
Logger.getLogger(ClientFrame.class.getName()).log(Level.SEVERE, null, ex);
}
});
timer.start();
}
public boolean checkIfGameIsClose() throws IOException {
boolean isClosedGame = clientConnectToServer.checkifGameIsEnd();
System.out.println(isClosedGame + " ---> Close");
return isClosedGame;
}
public boolean checkIfGameIsOpen() throws IOException {
boolean gameIsStart = clientConnectToServer.startGame();
System.out.println(gameIsStart + "---> open");
return gameIsStart;
}
その後、ゲームが開始される方法checkIfGameIsOpen()はtrueを返すコードセグメント
であること。 ゲームが終了しましたcheckIfGameIsClose()メソッドはtrueを返します。
mainGamePanelはPanelです。ゲームを開始するときに表示されるべきもの。
子パネルの可視性が変更されたときに、親パネルの検証/レイアウトを行いましたか? –
パネルのコンテナ(またはウィンドウのルートペイン)の 'revalidate()'と 'repaint()'メソッドを呼び出します。 –