2009-08-27 5 views
0

Java 응용 프로그램에서 마우스 오버 드롭 다운 메뉴를 시뮬레이트하기 위해 JWindow 객체를 사용하고 있습니다. 사용자가 JLabel 위에 마우스를 가져 가면 창이 나타나고 레이블이나 새로 표시되는 윈도우가 나올 때까지 창이 나타납니다. 내 문제는 사용자가이 작업을 수행 할 때마다 화면 하단의 작업 표시 줄에 제목이나 아이콘이없는 새 항목이 나타나고 창에서 setVisible (false)가 호출되면 사라지는 문제입니다.Solaris 5.10 : 작업 표시 줄에서 JWindow 버튼을 숨기는 방법은 무엇입니까?

장식되지 않은 JDialog로 전환하려고 시도했지만 문제가 해결되었지만 새로 도입되었습니다. JDialog에서 setVisible (true)을 호출하면 포커스가 내 프레임에서 제거됩니다. 제목 표시 줄의 색이 변경되어 전문가가 아닌 것처럼 보입니다. 장식되지 않은 JFrame의, 위의 문제를 모두 사용

나는 그 (JDesktopPane에 구조로 전환) 내 인터페이스의 완전한 재 설계를 필요로 JInternalFrame를를 사용하지 않으 발생, 내가 필요하지 않습니다 JInternalFrame의 다른 기능.

아이디어가 있으십니까?

답변

0

이 경우 JPopupMenu을 사용할 수 있습니다.

popupMenu = new JPopupMenu(); 

Action showPopupAction = new AbstractAction("Show Popup") { 
    public void actionPerformed(ActionEvent e) { 
    AbstractButton btn = (AbstractButton)e.getSource(); 
    Point buttonXY = btn.getLocationOnScreen(); 
    popupMenu.setLocation((int) buttonXY.getX(), ((int) buttonXY.getY()) + btn.getHeight() + 2); 
    popupMenu.setVisible(true); 
    } 
}; 

JButton btn = new JButton(showPopupAction); 

편집 : 전체 JPopupMenu를를 사용하는 대신 적은 리팩토링을 필요로 당신의 Component, 참조하는 Popup을 만드는 것입니다; 예 : javadoc의 당하는 JWindow의 내가 솔라리스에 해당하는 추가 이유를 상상 바탕 화면의 일류 시민이다 : 나는 당신의 문제에 대한 "빠른 수정"이 생각하지 않는 것보다 다른

Component myMnu = ... 
Popup popup = new Popup(null, myMnu, 100, 100); 
popup.show(); 

아이콘을 작업 표시 줄에 추가하십시오.

+0

감사합니다.이 부분은 살펴볼 가치가있는 것 같습니다. 그러나, 나는 팝업 동작에 대한 모든 작업을 이미 마쳤으며 가능한 경우 원래 질문의 작은 문제를 처리하기를 원합니다. 다음 날이나 2 일 안에이 응용 프로그램을 릴리스해야하고 지금은 리팩토링을 연기해야합니다. –

+0

@ Dan : 가장 최근 편집을 참조하십시오. Popup을 직접 사용하면 JWindow를 Popup에 "주입"할 수 있으므로 리펙토링을 줄일 수 있습니다. 팝업을 생성 할시기와 위치를 코드화해야하지만, 원래의 예제처럼 매우 간단합니다. – Adamski

관련 문제