• category: swing folder: OptionPaneMinimumSize title: JOptionPaneの最小サイズを設定する tags: [JOptionPane, UIManager] author: aterai pubdate: 2023-01-09T10:56:45+09:00 description: JOptionPaneの最小サイズをUIManagerを使用して変更します。 image: https://drive.google.com/uc?id=1VDOBP5adm7znzjkXMCd2ew2SKGJGgQW_

概要

JOptionPaneの最小サイズをUIManagerを使用して変更します。

サンプルコード

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, Kotlin

解説

  • Default
    • JOptionPaneのデフォルト最小サイズはBasicOptionPaneUISynthOptionPaneUIで個別に設定されているが値は同じで262*90
  • HierarchyListener + setPreferredSize
    • HierarchyListenerを使用してJOptionPaneに追加するメッセージ表示用コンポーネントが表示状態になったとき、JOptionPane#setPreferredSize(...)メソッドで推奨サイズを設定
  • OptionPane.minimumSize
    • UIManager.put("OptionPane.minimumSize", Dimension)JOptionPaneの最小サイズを設定
    • OptionPane.minimumSizenull以外の場合、BasicOptionPaneUI#getMinimumOptionPaneSize()メソッドはこの値を返す(nullの場合はnew Dimension(262, 90))
  • HierarchyListener + setPreferredSize
    • UIManager.put("OptionPane.minimumSize", Dimension)JOptionPaneの最小サイズを設定しても、メッセージ表示用コンポーネントなどの最小サイズがそれより大きくなる場合はそちらが優先される

参考リンク

コメント