JInternalFrameのTitlePaneの高さを変更
Total: 473
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JInternalFrame
の上部に配置されるタイトルバーの高さを変更します
Screenshot
Advertisement
サンプルコード
// InternalFrame.titleFont
// InternalFrame.titleButtonHeight
// InternalFrame.titleButtonWidth
// InternalFrame.titlePaneHeight
String key = "InternalFrame.titlePaneHeight";
int height = UIManager.getLookAndFeelDefaults().getInt(key);
SpinnerNumberModel model = new SpinnerNumberModel(height, 0, 50, 1);
model.addChangeListener(e -> {
int v = model.getNumber().intValue();
UIManager.put(key, v);
// UIManager.put("InternalFrame.titleButtonWidth", v);
// UIManager.put("InternalFrame.titleButtonHeight", v);
SwingUtilities.updateComponentTreeUI(desktop);
});
JSpinner spinner = new JSpinner(model) {
@Override public void updateUI() {
super.updateUI();
int h = UIManager.getLookAndFeelDefaults().getInt(key);
UIManager.put(key, h);
model.setValue(h);
SwingUtilities.updateComponentTreeUI(desktop);
}
};
View in GitHub: Java, Kotlin解説
WindowsLookAndFeel
でのみUIManager.put("InternalFrame.titlePaneHeight", 22)
でJInternalFrame
のTitlePane
の高さを変更可能- 左端の
SystemMenu
アイコンはタイトルバーの高さに応じて拡大縮小するが、閉じるアイコンなどのサイズは自動的に変化しない UIManager.put("InternalFrame.titleButtonHeight", ...)
などで更新する必要がある
- 左端の
JComponent titleBar = ( (BasicInternalFrameUI) frame.getUI() ).getNorthPane()
で個別のTitlePane
を取得しtitleBar.setPreferredSize(...)
でサイズ変更しても効果がない