먼저 Java Concurrency 패키지를 사용하고 있지만 요즘에는 문제가 있다는 것을 발견했습니다. 내가 갖고 싶은 응용 프로그램과 응용 프로그램은 상태 표시 줄과 다른 데이터로드로 SplashScreen
을 가질 수 있습니다. 그래서 SwingUtilities.invokeAndWait(call the splash component here)
을 사용하기로 결정했습니다. SplashScreen
은 JProgressBar
과 함께 나타나고 스레드 그룹을 실행합니다. 하지만 나는 사물을 잘 처리하지 못하는 것 같습니다. SwingWorker
을 살펴본 결과,이 목적으로 사용하려고 시도했지만 스레드가 반환됩니다. 다음은 약간의 의사 코드입니다. 그리고 내가 달성하려고 노력하고있는 점들. 업데이트 가능한 JProgressBar로 Java 스윙 스레딩
- 는
SplashScreen
- 에서 여러 스레드를 실행할 수 있습니다 정보를
- 를로드하는 동안 일시 정지
SplashScreen
이있는 응용 프로그램을 모든 스레드가 될 때까지SplashScreen
업데이트-수 아직 출구의 진행률 표시 줄 끝난.
시작 화면에게 내가 스레드 CountDownLatch를 용의 등을 사용하여, SwingWorkers
등 많은 것들을 시도
SplashScreen extends JFrame implements Runnable{
public void run() {
//run threads
//while updating status bar
}
}
try {
SwingUtilities.invokeAndWait(SplashScreen);
} catch (InterruptedException e) {
} catch (InvocationTargetException e) { }
시작 화면 건설을 시작. CountDownLatch는 실제로 처리하고 싶은 방식으로 작동했지만 GUI를 업데이트 할 수 없었습니다. SwingWorkers
을 사용할 때 invokeAndWait
은 기본적으로 무효화되었지만 (목적은) PropertyChangedListener
을 사용하는 경우에도 여전히 GUI를 업데이트하지 않습니다. 다른 사람이 몇 가지 아이디어가 있다면 듣는 것이 좋을 것입니다. 미리 감사드립니다.
나는 실제로 더 나은 코드를 게시하여 내 솔루션을 찾을 준비가되었습니다. 도와 주신 모든 분들께 감사드립니다.
[SSCCE] (http://SSCCE.org)를 만들고 게시 할 수 있다면 문제가 더 신속하고 정확하게 해결 될 수 있습니다. –
미안하지만, 내가 게시 한 것처럼 침대로 향하고 있었고, 내가 가지고있는 모든 것은 상당히 추악한 코드 였기 때문에 아이디어를 가로막을 수 있었으면 좋겠다. 아래 답변이 나를 위해 작동하지 않으면 실제 코드를 게시 할 것이다. 추천 해 주셔서 감사합니다. – ars265