将JTextField添加到JOptionPane:ShowOptionDialog

时间:2015-03-12 15:05:25

标签: java dialog jtextfield joptionpane

我想知道是否可以将JTextField添加到ShowOptionDialog框中。

     int optionChosen = JOptionPane.showOptionDialog(finishPayInput,     
     dialogPanel, "The Title", JOptionPane.NO_OPTION,      
     JOptionPane.QUESTION_MESSAGE, null, options , options[0]); 

当我运行程序时,会显示对话框,但JTextField不会显示。

2 个答案:

答案 0 :(得分:0)

您无法首先向JOptionPane.showOptionDialog添加文本字段参数是父组件而不是子组件。

请参阅documentation

  

public static int showOptionDialog(Component parentComponent,                      对象消息,                      字符串标题,                      int optionType,                      int messageType,                      图标图标,                      对象[]选项,                      对象initialValue)                               抛出HeadlessException

     

打开一个带有指定图标的对话框,其中包含初始选项   由initialValue参数确定并且选择的数量是   由optionType参数确定。如果optionType是   YES_NO_OPTION,或YES_NO_CANCEL_OPTION,选项参数为   null,然后选项由外观提供。

     

messageType参数主要用于提供默认图标   从外观和感觉。参数:parentComponent - 确定   显示对话框的框架;如果为null,或者如果为   parentComponent没有Frame,默认的Frame是usedmessage -   object to displaytitle - dialogoptionType的标题字符串 -   一个整数,指定对话框中可用的选项:   DEFAULT_OPTION,YES_NO_OPTION,YES_NO_CANCEL_OPTION或   OK_CANCEL_OPTIONmessageType - 指定类型的整数   这是消息,主要用于确定来自的图标   可插拔的外观:ERROR_MESSAGE,INFORMATION_MESSAGE,   WARNING_MESSAGE,QUESTION_MESSAGE或PLAIN_MESSAGEicon - 图标来   在对话框中显示 - 指示对象的对象数组   用户可以做出的选择;如果对象是组件,   它们被正确呈现;使用非呈现非String对象   他们的toString方法;如果此参数为null,则选项为   由Look and FeelinitialValue决定 - 对象   表示对话框的默认选择;只有有意义   选项用于;可以为nullReturns:表示该选项的整数   用户选择,或者如果用户关闭,则选择CLOSED_OPTION   dialogThrows:HeadlessException - 如果GraphicsEnvironment.isHeadless   返回true参见:GraphicsEnvironment.isHeadless()

答案 1 :(得分:0)

当然可以。 最简单的解决方案:

JTextField txt = new JTextField();
JOptionPane.showOptionDialog(null, finishPayInput, "The Title", JOptionPane.NO_OPTION,
                JOptionPane.QUESTION_MESSAGE, null, null, null);

但是,如果您只想显示JTextField(以获取用户输入),最好使用JOptionPane.showInputDialog

JOptionPane.showInputDialog(null, "Insert value: ", "The title", JOptionPane.QUESTION_MESSAGE);