Java:showInputDialog 中的自定义按钮

Posted

技术标签:

【中文标题】Java:showInputDialog 中的自定义按钮【英文标题】:Java: Custom Buttons in showInputDialog 【发布时间】:2012-10-31 07:33:38 【问题描述】:

如何向 JOptionPane.showInputDialog 的按钮添加自定义文本?

我知道这个问题JOptionPane showInputDialog with custom buttons,但它没有回答所提出的问题,它只是将它们引用到 JavaDocs,它没有回答它。

到目前为止的代码:

Object[] options1 = "Try This Number",
                 "Choose A Random Number",
                 "Quit";

JOptionPane.showOptionDialog(null,
                 "Enter a number between 0 and 10000",
                 "Enter a Number",
                 JOptionPane.YES_NO_CANCEL_OPTION,
                 JOptionPane.PLAIN_MESSAGE,
                 null,
                 options1,
                 null);

我想为此添加一个文本字段。

【问题讨论】:

您能否进一步扩展您的要求。另外,你目前有什么? 引用 javadocs(至少在这种情况下)是正确的答案。别人已经写过的就不用在这里写了。 【参考方案1】:

您可以使用自定义组件代替字符串消息,例如:

import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class TestDialog 

    public static void main(String[] args) 
        Object[] options1 =  "Try This Number", "Choose A Random Number",
                "Quit" ;

        JPanel panel = new JPanel();
        panel.add(new JLabel("Enter number between 0 and 1000"));
        JTextField textField = new JTextField(10);
        panel.add(textField);

        int result = JOptionPane.showOptionDialog(null, panel, "Enter a Number",
                JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE,
                null, options1, null);
        if (result == JOptionPane.YES_OPTION)
            JOptionPane.showMessageDialog(null, textField.getText());
        
    

【讨论】:

你如何获得输入的值? @ZuluDeltaNiner 来自面板中的文本字段。请查看上次编辑。 如果只是提示,没有文本框,怎么可能得到结果? @CardinalSystem 您可以使用JOptionPane.showInputDialog() 的变体之一。有关示例,请参阅Getting the User's Input from a Dialog。 如何添加带有快捷键(热键)的按钮并执行相应功能的操作【参考方案2】:

看看How to Make Dialogs: Customizing Button Text。

下面是一个例子:

Object[] options = "Yes, please",
                    "No, thanks",
                    "No eggs, no ham!";
int n = JOptionPane.showOptionDialog(frame,//parent container of JOptionPane
    "Would you like some green eggs to go "
    + "with that ham?",
    "A Silly Question",
    JOptionPane.YES_NO_CANCEL_OPTION,
    JOptionPane.QUESTION_MESSAGE,
    null,//do not use a custom Icon
    options,//the titles of buttons
    options[2]);//default button title

【讨论】:

以上是关于Java:showInputDialog 中的自定义按钮的主要内容,如果未能解决你的问题,请参考以下文章

调整showInputDialog textarea的大小?

如何更改 JOptionPane.showInputDialog 中按钮的默认文本

在 Java 中,哪个重载会被选为 null?

错误:找不到符号 -- EC=Character.parseChar(JOptionPane.showInputDialog("enter employee code"));

java中的字符串索引越界错误(charAt)

java注解的自定义和使用