私のプログラムに問題があります。ボタンハンドラがあり、JLabelを消してから1秒待ってから2番目のJLabelを消したいと思っています。私は自分のコードがうまくいくと思っていましたが、遅くなりましたが、メソッドが終了すると両方のJLabelが消えてしまいました。彼らは同時に消えて、これは私が望むものではありません。私のコードは以下の通りです。ご協力ありがとうございました!JLabelを一定期間後に消滅させるにはどうすればよいですか?
private void jButton14ActionPerformed(java.awt.event.ActionEvent evt) {
String numInputStr = inputBox.getText();
int numInput = Integer.parseInt(numInputStr);
inputBox.setText("");
if (numInput == 1) {
coin1.setVisible(false);
c1Visible = false;
} else if (numInput == 2) {
coin1.setVisible(false);
c1Visible = false;
coin2.setVisible(false);
c2Visible = false;
} else if (numInput == 3) {
coin1.setVisible(false);
c1Visible = false;
coin2.setVisible(false);
c2Visible = false;
coin3.setVisible(false);
c3Visible = false;
} else {
System.err.println("Invalid Input, try again");
}
jButton14.setVisible(false);
try {
Thread.sleep(1000);
} catch (Exception E) {
}
if ((c1Visible == false) && (c2Visible == true) && (c3Visible == true)) {
coin2.setVisible(false);
coin3.setVisible(false);
coin4.setVisible(false);
} else if ((c2Visible == false) && (c3Visible == true) && (c1Visible == false)) {
coin3.setVisible(false);
coin4.setVisible(false);
} else if ((c3Visible == false) && (c4Visible == true)) {
coin4.setVisible(false);
} else {
System.out.println("Something went wrong, please try again");
}
}
。ボタンのactionPerformed()でsleep()を呼び出すとイベントスレッドがブロックされ、何も起きないようになります。 – FredK