概要

JOptionPaneYesボタンがCancelボタンなどの後に追加されて一番右に配置されるよう設定します。

サンプルコード

#spandel
UIManager.put("OptionPane.isYesLast", Boolean.TRUE);
#spanend
#spanadd
private static final String KEY = "OptionPane.isYesLast";
#spanend
#spanadd

#spanend
#spanadd
JButton defaultButton = new JButton(KEY + ": false(default)");
#spanend
#spanadd
defaultButton.addActionListener(e -> {
#spanend
  UIManager.put("OptionPane.isYesLast", Boolean.FALSE);
  String str = JOptionPane.showInputDialog(getRootPane(), KEY + ": false");
  log.setText(str);
#spanadd
});
#spanend
#spanadd

#spanend
#spanadd
JButton yesLastButton = new JButton(KEY + ": true");
#spanend
#spanadd
yesLastButton.addActionListener(e -> {
#spanend
  UIManager.put("OptionPane.isYesLast", Boolean.TRUE);
  String str = JOptionPane.showInputDialog(getRootPane(), KEY + ": true");
  log.setText(str);
#spanadd
});
#spanend
View in GitHub: Java, Kotlin

解説

  • OptionPane.isYesLast: false(default)
    • Windows環境でのデフォルトで、Yesボタンが各ボタンの中で先頭(左端)に配置される
    • JOptionPane#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)が設定されている場合、先頭は右端になる
    • WindowsLookAndFeelでのデフォルトでYesボタン(YES_OPTION)やOKボタン(OK_OPTION)を各オプションボタンの中で先頭(左端)に配置する
    • JOptionPane#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)が設定されている場合、先頭は右端に反転する
  • OptionPane.isYesLast: true
    • Yesボタンが各ボタンの中で末尾(右端)に配置される
    • Yesボタンを各オプションボタンの中で末尾(右端)に配置する
    • MotifLookAndFeelNimbusLookAndFeelでもこの設定は有効
    • JOptionPane#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)が設定されている場合、末尾は左端になる
    • JOptionPane#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)が設定されている場合、末尾は左端に反転する

参考リンク

コメント