Я хочу иметь JInternalFrame, который сможет обрабатывать JTabbedPane так же, как Eclipse IDE. Я хочу, чтобы вкладки располагались поверх строки заголовка. У каждой вкладки должна быть своя кнопка закрытия. InternalFrame также должен иметь кнопку закрытия, чтобы пользователь мог закрыть все вкладки за один раз.
Вот что у меня есть:
Это то, что я хочу иметь (скриншот из Eclipse IDE):
Я не знаю, как я могу этого добиться. Может ли кто-нибудь указать мне в правильном направлении?
ИЗМЕНИТЬ:
Основываясь на комментарии к UI Delegate, я создал подкласс делегата 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);
}
}