Swing/OptionPaneOkButtonText のバックアップ(No.2)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/OptionPaneOkButtonText へ行く。
- 1 (2021-12-20 (月) 00:45:15)
- 2 (2024-10-16 (水) 12:00:37)
- category: swing folder: OptionPaneOkButtonText title: JOptionPaneで使用するメッセージダイアログのOKボタンテキストを変更する tags: [JOptionPane, UIManager, HierarchyListener] author: aterai pubdate: 2021-12-20T00:44:31+09:00 description: JOptionPaneから作成、使用可能なメッセージダイアログのOKボタンテキストを変更します。 image: https://drive.google.com/uc?id=1ngT9-9mnVJgjE-wARclMMawkfYmQ0G86
概要
JOptionPane
から作成、使用可能なメッセージダイアログのOK
ボタンテキストを変更します。
Screenshot
Advertisement
サンプルコード
UIManager.put("OptionPane.okButtonText", "back");
JLabel label2 = new JLabel("JButton#setFocusPainted(false)");
label2.addHierarchyListener(e -> {
Component c = e.getComponent();
if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0 && c.isShowing()) {
descendants(((JComponent) c).getRootPane())
.filter(JButton.class::isInstance)
.map(JButton.class::cast)
.findFirst()
.ifPresent(b -> {
b.setFocusPainted(false);
b.setText("back2");
});
}
});
JButton button2 = new JButton("HierarchyListener + setFocusPainted(false)");
button2.addActionListener(e -> {
Component p = ((JComponent) e.getSource()).getRootPane();
JOptionPane.showMessageDialog(p, label2, "title2", JOptionPane.PLAIN_MESSAGE);
});
// https://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#button
JButton button3 = new JButton("showOptionDialog");
button3.addActionListener(e -> {
Object[] options = {"Yes, please"}; // {"Yes, please", "No way!"};
JOptionPane.showOptionDialog(((JComponent) e.getSource()).getRootPane(),
"Would you like green eggs and ham?",
"A Silly Question",
JOptionPane.OK_OPTION, JOptionPane.PLAIN_MESSAGE,
null, options, options[0]);
});
View in GitHub: Java, Kotlin解説
Default
UIManager.put("OptionPane.okButtonText", "back")
ですべてのOK
ボタンのテキストを変更
showMessageDialog + HierarchyListener
JOptionPane.showMessageDialog(...)
で開くOK
ボタンのみのメッセージダイアログの表示状態が変化するイベントをHierarchyListener
で取得し、メッセージダイアログに配置されているJButton
を検索・取得してそのタイトルを変更- JOptionPaneの背景色を変更する
showOptionDialog
JOptionPane.showMessageDialog(...)
で開くオプションダイアログの選択可能な項目をひとつだけ設定してメッセージダイアログ風に変更し、そのひとつのボタンテキストを変更
参考リンク
- Customizing Button Text - How to Make Dialogs (The Java™ Tutorials > Creating a GUI With Swing > Using Swing Components)
- JFileChooserのボタンテキストを変更
- java - Is there a way to remove that focus on the button in a JOptionPanel? - Stack Overflow