私は多くの検索をしています。問題の解決策を見つけることができません。 JavaのJFrameを使ってGUIを設計するのは簡単ですが、setText以外の呼び出しで視覚的に更新するのははるかに面倒です。特に、視覚的な認識のための待ち時間をシミュレートする場合にはそうです。私はマルチスレッドと私が見つけたソリューションのすべてに精通していないので、私はそれらを必要とした方法を働かせることができなかったようです。Java - 変化する画像をシミュレートするためのスリーピングスレッド
私がやっていることは、シンプルなサイコロゲームのために特定の面に着陸する前にサイコロを振ることです。これを行うために、私はちょうど何分の1秒(この場合は150ミリ秒)ごとに設定された回数(例えば10回)サイコロ画像の異なる面を切り替えるだけです。
興味深いのは、現在の状態のこのコードは、起動時にどのようにして正しく動作するかです(ユーザ入力を受け入れる前に10回のロールサイクルを1回実行しますが、GUIのすべてのコンポーネントが表示されます期待通りに働く)。問題は、再ローリング時に、すべてのスレッドスリープが完了するまでGUIがブランクになることです。
このようなことについての私の知識が不足しているため、最初にやりたいことがどうしてうまくいくのか理解できません。うまくいけば、私はこれを達成するための正しい方法や私が現在やっていることに対する修正を得ることができます。ありがとう!
private void rollDice()
{
for(int i = 0; i < 10; i++)
{
dice1 = (int) (Math.random() * 6) + 1;
dice2 = (int) (Math.random() * 6) + 1;
img1 = new ImageIcon(dice1 + ".png");
img2 = new ImageIcon(dice2 + ".png");
try
{
Thread.sleep(150);
}
catch(Exception e)
{
}
lbl1.setIcon(img1);
lbl2.setIcon(img2);
}
}
JavaFxに切り替えます。 – Sedrick
あなたの問題は、メインスレッド上でforループを実行しているため、GUIがフリーズしてしまうことです。 – Sedrick
@SedrickJefferson私は、これはJavaの割り当てのためのものです – Charles