2016-07-24 9 views
0

.jar 파일을 만들고 프로그램에서 주 스레드 만 사용하면 모든 것이 정상이지만 동시성이 필요하고 내 스레드를 추가 할 때 .jar 파일이 열리지 않거나 실행되지 않습니다. 두 번 클릭하십시오.하나 이상의 스레드가있는 경우 .jar 파일을 사용할 수 없습니다.

class idk { 
    public static void main(String args[]) throws Exception { 
     new Thread(new Runnable() { 
      public void run() { 
       try { 
        JFrame j = new JFrame(); 
        j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
        j.setVisible(true); 

        j.getContentPane().setPreferredSize(new Dimension(800, 500); 
        j.pack(); 
        j.setLocationRelativeTo(null); 
       } catch(Exception e1) {} 
      } 
     }).start(); 
    } 
} 

.jar 파일로 컴파일 할 때 상기 코드는 어떤 이유로 실행하지 않을 것이다 : 여기

는 일례이다. 그러나 방금 동일한 코드를 사용했지만 스레드를 빠뜨린 경우 제대로 작동합니다.

+0

정확하게 코드를 복사하여 붙여 넣었습니까? 구문 오류가있어서 컴파일 할 수 없습니다. jar 파일을 어떻게 만듭니 까? (일부는 IDE/jar 유틸리티에서 시스템/내보내기를 빌드합니다)? –

답변

0

UI 구성 요소와 상호 작용하기 위해 하나의 스레드 인 Swing의 이벤트 발송 스레드 (EDT) 만 사용해야합니다. 이 코드를 사용하여 주 창을 만들기 : 응용 프로그램에서

SwingUtilities.invokeLater(new Runnable() { ... }); 

동시들은 UI와 상호 작용해야하는 경우 SwingWorker 객체 및 publish 방법을 사용하여 수행해야합니다.

자신의 Thread을 생성하고 해당 스레드에서 스윙 구성 요소를 만들거나 사용하면 슬픔을 느끼게됩니다.

관련 문제