Eclipse IDE처럼 JTabbedPane을 처리 할 수있는 JInternalFrame이 필요합니다. 탭이 제목 표시 줄 위에 놓 이길 원합니다. 각 탭에는 자체 닫기 버튼이 있어야합니다. InternalFrame에는 사용자가 한 번에 모든 탭을 닫을 수 있도록 닫기 버튼이 있어야합니다.Java Swing의 JInternalFrame 제목 표시 줄에 탭을 배치하는 방법은 무엇입니까?
이 내가 (이클립스 IDE에서 찍은 스크린 샷)가 할 것입니다 :
이
내가 가진 무엇모르겠다을 어떻게 이것을 달성 할 수 있습니다. 누구든지 올바른 방향으로 나를 가리켜 주시겠습니까?
편집 : UI 위임으로 보는 의견을 바탕으로
, 나는 메뉴를 제거 할 수있는 UI 위양의 서브 클래스를 생성하지만, 몇 가지 문제가이 함께있다 :
정상적인 JInternalFrame과 비교해 보면 재미있는 것처럼 보입니다. 아무 것도하지 않았지만 "createActionMap"및 "add (menuBar)"행을 주석 처리했습니다. 분명히 내가 제목 표시 줄을 겹쳐의 contentPane의 위치를 이동할 -
나는 제목 표시 줄 및 contentPane에 위치 설정 방법을 나타냅니다 아무 곳이나 라이브러리 코드에서 찾을 수 없습니다.
다음은 코드입니다 :
public class MyInternalFrameUI extends BasicInternalFrameUI {
public MyInternalFrameUI(JInternalFrame b) {
super(b);
// TODO Auto-generated constructor stub
}
public static ComponentUI createUI(JComponent b) {
return new MyInternalFrameUI((JInternalFrame)b);
}
protected JComponent createNorthPane(JInternalFrame w) {
titlePane = new MyBasicInternalFrameTitlePane(w);
return titlePane;
}
}
public class MyBasicInternalFrameTitlePane extends BasicInternalFrameTitlePane {
public MyBasicInternalFrameTitlePane(JInternalFrame f) {
super(f);
}
protected void installTitlePane() {
installDefaults();
installListeners();
createActions();
enableActions();
//createActionMap(); // This method is package protected and not visible
setLayout(createLayout());
assembleSystemMenu();
createButtons();
addSubComponents();
}
protected void addSubComponents() {
//add(menuBar); // Remove this to disable the menu
add(iconButton);
add(maxButton);
add(closeButton);
}
}
당신은 자신의 내부 프레임 모양과 느낌을 작성해야합니다 ... – MadProgrammer
연구의 무수한 시간 후에 LAF에 대해서는 단순한 요구 사항에 대해 매우 복잡해 보입니다. 라이브러리 파일 중 일부를 살펴 보았는데, 이로 인해 혼란이 더욱 커졌습니다. Synth LAF에 대해 알아 보는 것이 가장 쉬운가요? 그러나 모든 구성 요소에 대해 LAF를 제공하고 싶지 않습니다. 위키 백과에서 인용 : 그러나 synth는 기본보기를 제공하지 않으며 synth XML 파일에 정의되지 않은 구성 요소는 채색되지 않습니다. 그러나 다른 모든 위젯에는 기본 스타일을 할당하고 일부 특정 위젯에만 스타일을 사용자 정의 할 수 있습니다. - 그러나 그것은 어떻게 설명하지 않습니다. – user3804927