2016-08-15 3 views
0

예외를 잡아 대화 상자에 표시하는 Java 메소드가 있습니다. 대화 상자를 10 초 동안 만 만들고 싶으면 그 후에 사라져야합니다. 내 코드가10 초 후에 JOptionPane 대화 상자를 사라지게하는 방법

private void errorpopup(Exception m) 
{ 
     JOptionPane.showMessageDialog(
       null, 
       new JLabel("<html><body><p style='width: 300px;'>"+m.toString()+"</p></body></html>", JOptionPane.ERROR_MESSAGE)); 

} 

아래입니다. 미리 제안 해 주셔서 감사합니다.

+0

여기를 확인하십시오. https://docs.oracle.com/javase/tutorial/uiswing/misc/timer.html – user1803551

답변

0

SwingUtilities.getWindowAncestor (구성 요소)은 구성 요소의 첫 번째 상위 창을 반환하는 메서드입니다.

JLabel과 함께 (구성 요소로서) 이것을 사용하여 JOptionPane 메시지 대화 상자 창에 대한 참조를 얻을 수 있습니다. 그러면 JOptionPane 메시지 대화 상자를 닫고 10 초로 설정할 수 있습니다. 그래서 같은 뭔가 :

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JLabel; 
import javax.swing.JOptionPane; 
import javax.swing.SwingUtilities; 
import javax.swing.Timer; 

public class TestClass { 

    public static void main(String[] args) 
    { 
     errorpopup(new Exception("Error")); 
    } 

    private static void errorpopup(Exception m) 
    { 
     JLabel messageLabel = new JLabel("<html><body><p style='width: 300px;'>"+m.toString()+"</p></body></html>"); 
     Timer timer = new Timer(10000, 
      new ActionListener() 
      { 
       @Override 
       public void actionPerformed(ActionEvent event) 
       { 
        SwingUtilities.getWindowAncestor(messageLabel).dispose(); 
       } 
      }); 
     timer.setRepeats(false); 
     timer.start(); 
     JOptionPane.showMessageDialog(null, messageLabel, "Error Window Title", JOptionPane.ERROR_MESSAGE); 
    } 
} 

또한,이 링크는 그것을 할 수있는 방법의 또 다른 예를 가지고 How to close message dialog programmatically?

당신은 그것이 당신의 목적에 맞게 만들기 위해 약간의 작업을 할 필요를하지만 보여줍니다 당신은 깔끔한 사용자에게 카운트 다운을 어떻게 표시 할 수 있었 을까?

+1

이 링크가 질문에 대답 할 수 있지만 답변의 핵심 부분은 여기에 포함하는 것이 좋습니다 참조 용 링크를 제공하십시오. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 포스트/13344556) –

+0

@HunterTurner이 경우 중복으로 플래그를 지정하면 답변을 복사하지 않고 올바른 액션 코스가됩니다. – user1803551

+0

어떻게하면됩니까? 편집 : 나는 그것을 할 수있는 권한이 부족하다고 가정합니다. –