많은 검색을 수행했기 때문에 내가 겪고있는 문제에 대한 해결책을 찾을 수 없습니다. Java의 JFrame으로 GUI를 설계하는 것은 상당히 간단하지만, setText 호출 이상일 때 시각적으로 업데이트하는 것은 훨씬 더 까다 롭습니다. 특히 시각적 인식을위한 대기 시간을 시뮬레이션하려는 경우 더욱 그렇습니다. 멀티 스레딩과 내가 찾은 모든 솔루션에 익숙하지 않아서 필자가 필요로했던 방식으로 작업 할 수 없었습니다.Java - 이미지 변경을 시뮬레이션하는 슬리핑 스레드
내가하려는 것은 간단한 주사위 게임의 특정 측면에 착륙하기 전에 주사위를 굴리는 것입니다. 이를 위해 주사위 이미지의 다른면을 설정된 횟수 (예 : 10) 씩 초 단위로 전환합니다 (이 경우 150 ms).
흥미로운 점은 현재 상태의이 코드는 시작시에 어떻게 제대로 작동하는지 (모든 사용자 입력을 수락하기 전에 한 번 전체 10 롤 사이클을 수행하지만 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