2015-01-12 3 views
0

У меня есть пользовательский JDialog, который я сделал для решения некоторых локальных проблем (RTL и т. Д.) до сих пор, у него была только опция «ok», Мне нужно изменить теперь она также имеет кнопку отмены. Я сделал это. Единственная проблема в том, что Я не знаю, как получить от нее вход, было нажато OK или Отмена?Пользовательский JDialog - выясните, было ли задано OK

, пожалуйста, помогите.

это мой код:

public MyDialog(String title,boolean withCancelButton) { 

String message = "<html><b><font color=\"#8F0000\" size=\"7\" face=\"Ariel\">" + title + "</font></p></html>"; 

JOptionPane pane = new JOptionPane(message, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION); 
pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);   

JDialog dialog = pane.createDialog(null, title); 

dialog.setVisible(true); 
dialog.dispose(); 

if (pane.getOptionType() == 1) 
    okWasPressed = true; 
else 
    okWasPressed = false; 

}

дело в том, что pane.getOptionType() всегда возвращает "2", так что его, вероятно, рассчитывать варианты или что-то.

как я могу добраться до фактического выбора?

спасибо, Dave.

ответ

1

Самый простой вариант заключается в использовании стандартной функциональности, например:

int opt = JOptionPane.showOptionDialog(jf, "Do you really want to?", "Confirm", 
     JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null); 
if(opt == JOptionPane.OK_OPTION) { 
    System.out.println("Ok then!"); 
} else { 
    System.out.println("Didn't think so."); 
} 

Если вы действительно хотите использовать свой собственный диалог, а в примере вы должны использовать getValue() для проверки того, что было нажато:

JOptionPane optionPane = new JOptionPane("Do you really want to?", 
     JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION); 
JDialog dialog = optionPane.createDialog(jf, "Confirm"); 

dialog.setVisible(true); 
dialog.dispose(); 

int opt = (int) optionPane.getValue(); 
if(opt == JOptionPane.OK_OPTION) { 
    System.out.println("Ok then!"); 
} else { 
    System.out.println("Didn't think so."); 
} 
+0

Конечно, это минимальный пример - вам нужно также выполнить нулевую проверку возврата getValue(). – BarrySW19

+0

10x - это сработало :) –

0

Обычно это можно сделать так:

int response = JOptionPane.showConfirmDialog(parent, "message", "title", JOptionPane.OK_CANCEL_OPTION); 
System.out.println(response); 
0

Задать вопрос, описанный в...

JOptionPane pane = new JOptionPane(arguments); 
pane.set.Xxxx(...); // Configure 
JDialog dialog = pane.createDialog(parentComponent, title); 
dialog.show(); 
Object selectedValue = pane.getValue(); 
if(selectedValue == null) 
    return CLOSED_OPTION; 
//If there is not an array of option buttons: 
if(options == null) { 
    if(selectedValue instanceof Integer) 
     return ((Integer)selectedValue).intValue(); 
    return CLOSED_OPTION; 
} 
//If there is an array of option buttons: 
for(int counter = 0, maxCounter = options.length; 
    counter < maxCounter; counter++) { 
    if(options[counter].equals(selectedValue)) 
    return counter; 
} 
return CLOSED_OPTION; 

Вы должны быть в состоянии использовать JOptionPane#getValue()

Однако, если вы какие-то массово прессование причин, чтобы сделать это, вы должны использовать один из static фабричных методов. См. How to Make Dialogs для получения более подробной информации.

 Смежные вопросы

  • Нет связанных вопросов^_^