Swing にsetScreen(int stage)
は、パラメータに応じて特定のボタンを非表示または非表示にすると呼ばれるいくつかのボタンを非表示および表示するメソッドがありstage
ます。メソッドを呼び出して、数秒待ってから、次のコードのようにもう一度呼び出します。
... //Here stage has been assigned to some value
setScreen(stage);
if (stage != STAGE_TWO) {
sleep(WAIT_TIME * 1000);
stage = WELCOME;
setScreen(stage);
}
のコードsetScreen(int stage)
は次のようなものです。
void setScreen(int stage) {
switch (stage) {
case WELCOME:
screen.infoLabel.setText("Welcome!");
screen.startButton.setVisible(true);
break;
case STAGE_TWO:
screen.infoLabel.setText("We are in stage two!");
screen.startButton.setVisible(false);
break;
}
screen.validate();
}
screen は、JFrame を拡張するクラスのインスタンス化です。
ここでの問題はsetScreen(stage)
、変更がコミットされる前にスレッドがスリープ状態になるため、最初のものが表示されないことです。システムの時間をチェックするwhileループをスリープに置き換えてみましたが、効果は同じです。
**編集: ** 推奨される StackOverflow スレッドで、有用な Swing Timer に関する情報を見つけました。私はそれに取り組み、私が行った有用な進歩をアップロードします.