마우스 클릭시 JDesktopPane에 추가되는 여러 개의 JInternalFrames로 Swing 응용 프로그램을 만들었습니다. 같은 내부 프레임의 인스턴스가 DesktopPane에 하나만 존재하도록합니다. 사용자가 프레임을 열 때 같은 프레임이 두 번 표시되는 것을 원하지 않습니다.한 번에 하나의 JInternalFrame 만 엽니 다.
답변
간단한 해결책은 HashMap<String,JInternalFrame>
을 만드는 것입니다. key
은 JInternalFrame
의 제목이되고 value
은 현재 JInternalframe
의 object
입니다. 내부 프레임을 처음 열면 에 (key,value
) 쌍을 저장하십시오. 모든 JInternalFrame
창에 대한 닫기 버튼을 비활성화하여 표시된 JInternalFrame
창을 삭제할 수 없습니다. 키보드의 esc
버튼을 사용하여 같은 내부 프레임을 열 menu item
을 클릭하면 현재 화면 JInternalFrame
가 DesktopPane
부탁해에 최소화 누를 때, 그 JInternalFrame
의 title
가 기존되어 있는지 확인하도록, 각 JInternalFrame
객체에 esc
키를 등록 그 HashMap
은 key
입니다. 존재하는 경우 key
에 대해 value
을 검색하고 JInternalFrame
변수를 참조한 다음 DesktopPane
에 복원하십시오. 해당 입력이 title
인 경우 해당 HashMap
에 존재하지 않는 경우 새 JInternalFrame
개체를 만들고 HasMap
에 동일한 항목을 입력하고 표시하십시오.
참고 : 내가 여기에 게시 무엇 이건 당신이
JInternalFrame
각각은 고유의 다른functionality
의 많은 유형을 가질 수 있습니다 상황에 대한 솔루션입니다, 당신은 각각 하나의instance
을 유지하려면 그 중JInternalFrame
입니다.
http://docs.oracle.com/javase/tutorial/uiswing/events/internalframelistener.html 유용한 정보입니다. – pixylife
@luzifer : 예. 이전에 통과 했었습니다. JInternalFrame을 숨기거나 최소화 할 수 있습니다. 당신의 필요에 따라 ..여기에 게시 한 것은 고유 한 서로 다른 기능을 가진 여러 유형의'JInternalFrame'을 가질 수있는 상황을위한 솔루션이며, 각각의 JInternalFrame 인스턴스를 하나만 유지하려고합니다. –
고마워요. .. – pixylife
다음은 샘플 코드 일 수 있습니다. 이 도움을 바랍니다. JdesktopPane이있는 메인 애플리케이션에서 내부 프레임을 호출하는 메뉴 조치.
private void YourJinternalFrameMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
YourJinternalFrame nw = YourJinternalFrame.getInstance();
nw.pack();
//usefull part for you.. if open shows, if not creates new one
if (nw.isVisible()) {
} else {
desktopPane.add(nw);
nw.setVisible(true);
}
try {
nw.setMaximum(true);
} catch (PropertyVetoException ex) {
Logger.getLogger(MainApplication.class.getName()).log(Level.SEVERE, null, ex);
}
}
은 YourJinternalFrame
private static YourJinternalFrame myInstance;
public static YourJinternalFrame getInstance() {
if (myInstance == null) {
myInstance = new YourJinternalFrame();
}
return myInstance;
이 간단한 코드 시도의 내부를 넣어 : 시도
YourJinternalFrame nw = new YourJinternalFrame();
private void YourJinternalFrameMenuItemActionPerformed(java.awt.event.ActionEvent evt) {
if(!nw.isVisible()){
YourJDesktopPane.add(nw);
nw.setVisible(true);
}
}
을이 간단한 코드 걸릴 클래스 변수 CHK와 동일한 0 다음 전화 JFrame의 설정 방법 구성 요소 제거 된 이 chk = 0으로 다시 당신이 내부 프레임이 CHK = 1 을 설정 전화 제로 여부 그게 전부입니다 wheather를 내부 호출에 CHK 비교하면 모든
- 1. javascript/Jquery 팝업 - 한 번에 하나의 팝업 만 엽니 다.
- 2. 한 번에 하나의 정보창 만 엽니 다. Google지도
- 3. Google API V3 한 번에 하나의 infoWindow 만 엽니 다.
- 4. 자바가 JInternalFrame의 한 인스턴스 만 엽니 다.
- 5. 아코디언에서 한 번에 탭 하나를 엽니 다.
- 6. 한 번에 하나의 스레드 만 #
- 7. Wordpress 고급 사용자 정의 필드, Google Map은 한 번에 하나의 정보창 만 엽니 다.
- 8. 부트 스트랩 DateTimePicker : 한 번에 datetimepicker를 엽니 다.
- 9. 한 번에 하나의 콜백 만 - WCF 제한?
- 10. 한 번에 하나의 Windows 양식 만 표시하려면 어떻게합니까?
- 11. 방법 만 페이지를 엽니 다
- 12. mysql은 한 번에 하나의 액세스 만 보장합니다.
- 13. 한 번에 하나의 MySQL 데이터베이스 만 작동합니다.
- 14. OpenGL : 한 번에 하나의 FBO 만 작동합니다.
- 15. 한 번에 하나의 드롭 다운 만 열림
- 16. jQuery는 한 번에 하나의 div 만 표시합니다.
- 17. didRangeBeacons는 한 번에 하나의 iBeacons 만 반환합니다.
- 18. Android Soundboard 한 번에 하나의 소리 만
- 19. 한 번에 하나의 타이머 만 활성화
- 20. Android보기는 한 번에 하나의 수신기 만 허용합니까?
- 21. 한 번에 하나의 PuTTY 세션 만 작동합니까?
- 22. 한 번에 하나의 이벤트 만 실행하는 방법
- 23. 한 번에 하나의 라디오 버튼 만 선택
- 24. Visual Studio에서 한 번에 하나의 솔루션 만
- 25. JitterBit 한 번에 하나의 작업 만 실행
- 26. 한 번에 하나의 모듈 기능 만 실행하십시오.
- 27. 한 번에 하나의 버튼 만 선택
- 28. Redactor는 한 번에 하나의 인스턴스 만 표시합니다.
- 29. 한 번에 하나의 비디오 만 재생 HTML5
- 30. 부트 스트랩 3 메뉴 - 두 개의 접기 버튼 - 한 번에 하나씩 만 엽니 다.
우리에게 당신이 시도 아무것도 표시합니다. –
이 메서드는 "removeAll()"이라고 사용했습니다. – pixylife
생각 : Label 또는 Button을 클릭하면 setEnable (false)을 사용하면 사용자가 InternalFrame을 닫고 버튼을 활성화 할 때까지 버튼이 비활성화됩니다. – Azad