как изменить текст кнопок по умолчанию в JOptionPane.showInputDialog

Я хочу установить текст кнопок OK и CANCEL в JOptionPane.showInputDialog к моим собственным струнам.

есть способ изменить текст кнопок в JOptionPane.showOptionDialog, но я не мог найти способ, чтобы изменить его в showInputDialog.

5 ответов


Если вы хотите 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"});

Если вы не хотите его только для одного inputDialog, добавьте эти строки перед созданием диалога

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

где " yup " и "nope" - это текст, который вы хотите отобразить


код ниже должен сделать диалоговое окно, и вы можете указать текст кнопки в 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);

кроме того, обязательно просмотрите учебники Java на сайте Oracle. Я нашел решение по этой ссылке в учебниках http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#create


Поиск "пользовательский текст JOptionPane" в google показал этот ответ https://stackoverflow.com/a/8763349/975959