ラジオボタンと情報ラベルが付いたパネルがあります。ユーザーがそのラジオボタンをクリックすると、ラベルが表示されinfoLabel.setText("...loading data....");
、プログラムは5秒かかる長いループを実行します。ループが終了すると、プログラムはinfoLabel.setText("data was loaded");
final RadioButton yesRadioButton=new RadioButton("confirm","Yes");
yesRadioButton.addClickHandler(new ClickHandler(){
@Override
public void onClick(ClickEvent event) {
infoLabel.setText("...loading data....");
//long loop here
for (int i = 0; i < cities.length; ++i) {
citiesOracle.add(cities[i]);}
infoLabel.setText("data was loaded");
}
});
上記のコードは正しく動作しません。ラジオボタンをチェックすると、プログラムは5秒間フリーズし、ラベルに「データがロードされました」と表示されました。ループを実行する前に、ラベルに「...データを読み込んでいます....」と表示されませんでした。
そのため、ラジオボタンをクリックした直後にプログラムがループを実行し、「データが読み込まれました」と表示される前に、ラベルに「...読み込み中のデータ....」と表示される機会がありませんでした。
では、問題を解決するにはどうすればよいでしょうか。