JOptionPaneの最小サイズを設定する
Total: 1230, Today: 1, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
JOptionPaneの最小サイズをUIManagerを使用して変更します。
Screenshot

Advertisement
Source Code Examples
String key = "OptionPane.minimumSize";
JButton button3 = new JButton(key);
button3.addActionListener(e -> {
// UIManager.put(key, new DimensionUIResource(120, 120));
UIManager.put(key, new Dimension(120, 120));
Component p = ((JComponent) e.getSource()).getRootPane();
JOptionPane.showMessageDialog(
p, "message3", "title3(120*120)", JOptionPane.PLAIN_MESSAGE);
UIManager.put(key, UIManager.getLookAndFeelDefaults().getDimension(key));
});
View in GitHub: Java, KotlinDescription
DefaultJOptionPaneのデフォルト最小サイズはBasicOptionPaneUIとSynthOptionPaneUIで個別に設定されているが値は同じで262*90
HierarchyListener + setPreferredSizeHierarchyListenerを使用してJOptionPaneに追加するメッセージ表示用コンポーネントが表示状態になったとき、JOptionPane#setPreferredSize(...)メソッドで推奨サイズを設定
OptionPane.minimumSizeUIManager.put("OptionPane.minimumSize", Dimension)でJOptionPaneの最小サイズを設定OptionPane.minimumSizeがnull以外の場合、BasicOptionPaneUI#getMinimumOptionPaneSize()メソッドはこの値を返す(nullの場合はnew Dimension(262, 90))- このサンプルでは
JOptionPaneを閉じたあとにUIManager.put("OptionPane.minimumSize", UIManager.getLookAndFeelDefaults().getDimension("OptionPane.minimumSize"))で最小サイズをデフォルト値に戻している
HierarchyListener + setPreferredSizeUIManager.put("OptionPane.minimumSize", Dimension)でJOptionPaneの最小サイズを設定しても、メッセージ表示用コンポーネントなどの最小サイズがそれより大きくなる場合はそちらが優先される
Reference
- BasicOptionPaneUI#getMinimumOptionPaneSize() (Java Platform SE 8)
- JOptionPaneに配置するJTextAreaの最大幅を指定してサイズ調整を行う