JInternalFrameのタイトルパネルをフレーム原点から描画する
Total: 1121, Today: 1, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
JInternalFrameのタイトルパネルをフレーム原点から描画するかBorderを考慮した配置にするかを切り替えます。
Screenshot

Advertisement
Source Code Examples
String key = "InternalFrame.layoutTitlePaneAtOrigin";
JDesktopPane desktop = new JDesktopPane();
boolean b = UIManager.getBoolean(key);
JCheckBox check = new JCheckBox("InternalFrame TitlePane layout", b) {
@Override public void updateUI() {
super.updateUI();
boolean b = UIManager.getLookAndFeelDefaults().getBoolean(key);
setSelected(b);
UIManager.put(key, b);
SwingUtilities.updateComponentTreeUI(desktop);
}
};
check.addActionListener(e -> {
UIManager.put(key, ((JCheckBox) e.getSource()).isSelected());
SwingUtilities.updateComponentTreeUI(desktop);
});
check.setOpaque(false);
addFrame(desktop, 0, true);
addFrame(desktop, 1, false);
View in GitHub: Java, KotlinDescription
BasicLookAndFeel、MetalLookAndFeel、MotifLookAndFeel、NimbusLookAndFeelのデフォルトはfalseMetalLookAndFeelでこの設定をtrueにするとタイトルパネルがJInternalFrameのBorderを考慮せずに原点から幅全体が描画されて不自然なレイアウトのタイトルパネルになってしまうMotifLookAndFeelでこの設定をtrueにするとタイトルパネルがJInternalFrameのBorderを考慮せずに原点から幅全体を占めるようレイアウトされるNimbusLookAndFeelでこの設定をtrueにするとフレーム化されている場合は変化なしだが、アイコン化されている場合はその高さが変化する場合がある
WindowsLookAndFeel、GTKLookAndFeelのデフォルトはtrueWindowsLookAndFeelでこの設定をfalseにするとタイトルパネルがJInternalFrameのBorderを考慮して縮小して描画されて不自然なレイアウトのタイトルパネルになってしまうGTKLookAndFeelでこの設定をfalseにするとタイトルパネルアイコンがタイトル文字列にかぶったり最大化、最小化、閉じるボタンがJInternalFrameの内側に移動して不自然なレイアウトのタイトルパネルになってしまう
Reference
- BasicInternalFrameUI#getNorthPane() (Java Platform SE 8)
InternalFrame.layoutTitlePaneAtOriginの設定を考慮する必要があるのはタイトルパネル(NorthPane)を自作する場合のみ?