2012-02-08 2 views
-1

내 새로 고침 및 새로 고침 메서드로 인해 새 창 jpanel이 표시됩니다. 내 텍스트 영역이 동일한 창에서 업데이트되기를 원합니다. 나는 내가 옳은 jpanel을 부를 것이라고 생각하지 않는다. 이 문제를 어떻게 해결할 수 있습니까? 또한 새로운 창을 만드는 이유는 무엇입니까?java gui textarea가 올바르게 업데이트되지 않습니다.

public static void main(String[] args) { 
       MPUComp frame = new MPUComp(); 
       frame.setVisible(true); 

} 
public MPUComp() { 
    setTitle("Mpu Finder"); 
    ImageIcon LoadIco = new ImageIcon(getClass().getResource("load.png")); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setBounds(100, 100, 799, 680); 

    contentPane = new JPanel(); 
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); 
    setContentPane(contentPane); 
    contentPane.setLayout(null); 
    btnFind1.setBounds(250, 27, 68, 23); 

    contentPane.add(btnFind1); 
    btnLoadMpu.setBounds(328, 27, 36, 22); 
    btnLoadMpu.setIcon(LoadIco); 
    contentPane.add(btnLoadMpu); 
    btnFind2.setBounds(642, 27, 68, 23); 
    contentPane.add(btnFind2); 
    btnLoadMpu2.setBounds(720, 28, 36, 22); 
    btnLoadMpu2.setIcon(LoadIco); 
    contentPane.add(btnLoadMpu2); 
    menu(); 

} 
public void refresh(String pane1) { 
    textArea_1.append(pane1 + "\n"); 
    contentPane.revalidate(); 
    contentPane.repaint(); 
    setVisible(true); 
} 
public void refresh2(String pane1) { 
     textArea_2.append(pane1 + "\n"); 
     contentPane.revalidate(); 
     contentPane.repaint(); 
     setVisible(true); 

} 
+0

전체 소스 코드를 올리십시오. 당신이 제공 한 것은'refresh' 메소드를 전혀 호출하지 않습니다 – mbatchkarov

답변

5
  1. 스윙 구성 요소 필수는는 이벤트 파견 스레드에서 업데이트 될
  2. 하지 사용하십니까 다시 그리기 요청을 컨테이너를 무효화하거나 발행 할 필요가 없습니다 null 레이아웃 관리자
  3. 이와 같은 질문을 할 때는을 포함하는 것이 가장 좋습니다

이러한 질문에는 거의 번 50 번이 표시됩니다. 다음 번에는 이미 충분히 답변 된 관련 항목을 검색하십시오.

자세한 내용은 Concurrency in Swing을 참조하십시오.

+0

invokelater를 textarea.append 만 사용하여 시도했지만 작동하지 않습니다 –

+1

@CharlieMorrison, 더 빨리 도움을 받으려면 4 번 항목을 참조하십시오. – mre

+0

알아 두었습니다. 그것은 주 클래스의 메서드를 호출하면 작동하지만 다른 클래스에서는 호출되지 않습니다. –

관련 문제