14

我想将 OK 和 CANCEL 按钮的文本设置JOptionPane.showInputDialog 为我自己的字符串。

有一种方法可以在 中更改按钮的文本JOptionPane.showOptionDialog,但我找不到在 中更改它的方法showInputDialog

4

5 回答 5

20

如果您不希望它仅用于单个 inputDialog,请在创建对话框之前添加这些行

UIManager.put("OptionPane.cancelButtonText", "nope");
UIManager.put("OptionPane.okButtonText", "yup");

其中 'yup' 和 'nope' 是您要显示的文本

于 2013-01-19T01:18:23.487 回答
13

下面的代码应该会出现一个对话框,您可以在Object[].

Object[] choices = {"One", "Two"};
Object defaultChoice = choices[0];
JOptionPane.showOptionDialog(this,
             "Select one of the values",
             "Title message",
             JOptionPane.YES_NO_OPTION,
             JOptionPane.QUESTION_MESSAGE,
             null,
             choices,
             defaultChoice);

此外,请务必查看 Oracle 站点上的 Java 教程。我在教程http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#create的这个链接上找到了解决方案

于 2013-01-18T21:54:30.260 回答
9

如果您想要带有自定义按钮文本的 JOptionPane.showInputDialog,您可以扩展 JOptionPane:

public class JEnhancedOptionPane extends JOptionPane {
    public static String showInputDialog(final Object message, final Object[] options)
            throws HeadlessException {
        final JOptionPane pane = new JOptionPane(message, QUESTION_MESSAGE,
                                                 OK_CANCEL_OPTION, null,
                                                 options, null);
        pane.setWantsInput(true);
        pane.setComponentOrientation((getRootFrame()).getComponentOrientation());
        pane.setMessageType(QUESTION_MESSAGE);
        pane.selectInitialValue();
        final String title = UIManager.getString("OptionPane.inputDialogTitle", null);
        final JDialog dialog = pane.createDialog(null, title);
        dialog.setVisible(true);
        dialog.dispose();
        final Object value = pane.getInputValue();
        return (value == UNINITIALIZED_VALUE) ? null : (String) value;
    }
}

你可以这样称呼它:

JEnhancedOptionPane.showInputDialog("Number:", new Object[]{"Yes", "No"});
于 2013-01-18T21:55:46.423 回答
3

请参阅如何制作对话框:自定义按钮文本

于 2013-01-18T21:22:04.373 回答
1

在谷歌中搜索“自定义文本 JOptionPane”揭示了这个答案 https://stackoverflow.com/a/8763349/975959

于 2013-01-18T21:22:03.217 回答