2014-02-11 2 views
0

게시물에이어서 Showing JDialog in taskbar not workingShow JDialog on taskbar 작업 표시 줄에 JDialog를 표시하려고했습니다. 그것이 효과가 있지만, 그 행동은 이상하고 좋지 않습니다.작업 표시 줄에 JDialog가 잘 보이지 않습니다.

그래서 작업 표시 줄에 단추가 표시되지만이를 클릭하면 작은 바탕 화면이 바탕 화면 왼쪽 상단에 나타납니다. 이 창은 너무 작아 내용이 보이지 않습니다. 확대하면 비어있는 것을 볼 수 있습니다. 내 JDialog는이 창을 닫은 후에 만 ​​나타납니다.

이 창을 없애거나 내 JDialog를 포함 할 수있는 방법이 있습니까?

public class SelectionDialog extends JDialog{ 

private static final long serialVersionUID = 5677381647525913165L; 
private int response = JOptionPane.NO_OPTION; 
private SelectionFrame frame = null; 
public SelectionDialog(String attachmentName, Long processInstance, String processName) { 
    super(new SelectionFrame("Selection")); 
    setModalityType(ModalityType.TOOLKIT_MODAL); 
    setVisible(true); 
    toFront(); 
    try { 
     UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); 
    } catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
    } catch (InstantiationException e) { 
    e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
    e.printStackTrace(); 
    } catch (UnsupportedLookAndFeelException e) { 
    e.printStackTrace(); 
    } 
    response = JOptionPane.showConfirmDialog(this.getParent(), "Would you like to apply the policy attachment " + attachmentName + " to current instance (" + processInstance + ") of process " + processName + " ?", "Confirm", 
      JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); 
} 

public void setVisible(boolean visible) { 
    super.setVisible(visible); 
    if (!visible) { 
     ((SelectionFrame)getParent()).dispose(); 
    } 
} 

public int getUserSelection(){ 
    return response; 
} 
} 

는 프레임 코드 :

public class SelectionFrame extends JFrame{ 

private static final long serialVersionUID = -9063300247378170855L; 

SelectionFrame(String title) { 
    super(title); 
    setUndecorated(true); 
    setVisible(true); 
    setLocationRelativeTo(null); 
} 
} 

그런 다음 내 주요 응용 프로그램 내에서 내가이 같이 사용

SelectionDialog dialog = new SelectionDialog(attachmentDAO.getAttachmentName(), inst.getInstanceId(), this._processId); 
int response = dialog.getUserSelection(); 
if (response == JOptionPane.NO_OPTION) { 
System.out.println("No button clicked"); 
} else if (response == JOptionPane.YES_OPTION) { 
System.out.println("Yes button clicked"); 
} else if (response == JOptionPane.CLOSED_OPTION) { 
//System.out.println("JOptionPane closed"); 
} 
dialog.setVisible(false); 

는 또한 여기에 사진을 포함했다 : 를! http://tinypic.com/view.php?pic=mslnyq&s=8#.Uvq17bTpKnc ! http://tinypic.com/view.php?pic=33mlbty&s=8

+0

더 빨리 도움을 받으려면 [최소, 완료, 테스트 및 판독 가능한 예] (http://stackoverflow.com/help/mcve)를 게시해야합니다. –

+0

조언에 따라 코드와 두 장의 그림을 포함 시켰습니다. – Peter

+0

나는 그것을 고치지 만 다른 문제가 발생했습니다. 따라서, 나는 새로운 질문을 만들었습니다. http://stackoverflow.com/questions/21727652/jframe-is-not-removed-from-the-taskbar – Peter

답변

0

null을 어떤 유형에도 캐스트하는 것은 쓸모가 없습니다. 실제 객체를 생성자에 전달합니다.

또한 JDialog (레이블 일 가능성이 있음)에 내용을 추가해보십시오. 크기 조정이 문제가되지 않도록하십시오 (적절한 레이아웃 관리자 사용). JDialog의 위치는 How do I center a JDialog on screen? 또는 이와 유사한 것을 참조하십시오.

희망이 도움이됩니다.

+0

"대화 상자에는 없어야하기 때문에 JDialog의 생성자에 null을 전달합니다. 소유자가 최상위 창과 같이 표시 될 수 있습니다. "(http://stackoverflow.com/questions/19116310/showing-jdialog-in-taskbar-not-working?rq=1). 내 JDialog에는 이미 텍스트 내용이 포함되어 있으며 바탕 화면의 중앙에 표시됩니다. 유일한 문제는 상단 왼쪽 구석에있는 중간 작은 창입니다. 내 JDialog를 표시하려면이 창을 먼저 닫아야합니다. – Peter

+0

JFrame을 확장하는 SelectionFrame과 null을 대체했습니다. 여전히 제대로 작동하지 않습니다. – Peter

+0

나는 그것을 고칠 수 있었지만 다른 문제가 발생했습니다. 따라서 새로운 질문을 만들었습니다. http://stackoverflow.com/questions/21727652/jframe-is-not-removed-from-the-taskbar – Peter

관련 문제