2011-12-31 16 views
48

He creado un JOptionPane y solo tiene dos botones YES_NO_OPTION.JOptionPane SÍ/No Opciones Confirmar cuadro de diálogo Problema

Después JOptionPane.showConfirmDialog salga hacia fuera, quiero clic YES BUTTON seguir abriendo la JFileChooser y si he hecho clic NO BUTTON se debe cancelar la operación.

Parece bastante fácil, pero no estoy seguro de cuál es mi error.

Fragmento de código:

if (textArea.getLineCount() >= 1) { //The condition to show the dialog if there is text inside the textArea 

    int dialogButton = JOptionPane.YES_NO_OPTION; 
    JOptionPane.showConfirmDialog (null, "Would You Like to Save your Previous Note First?","Warning",dialogButton); 

    if (dialogButton == JOptionPane.YES_OPTION) { //The ISSUE is here 

    JFileChooser saveFile = new JFileChooser(); 
    int saveOption = saveFile.showSaveDialog(frame); 
    if(saveOption == JFileChooser.APPROVE_OPTION) { 

    try { 
     BufferedWriter fileWriter = new BufferedWriter(new FileWriter(saveFile.getSelectedFile().getPath())); 
     fileWriter.write(textArea.getText()); 
     fileWriter.close(); 
    } catch(Exception ex) { 

    } 
} 

Respuesta

89

Usted tiene que mirar en el valor de retorno de la llamada a showConfirmDialog. I.E .:

int dialogResult = JOptionPane.showConfirmDialog (null, "Would You Like to Save your Previous Note First?","Warning",dialogButton); 
if(dialogResult == JOptionPane.YES_OPTION){ 
    // Saving code here 
} 

Usted estaba probando contra dialogButton, que estaba utilizando para configurar los botones que deben mostrarse por el diálogo, y esta variable no fue actualizada - por lo dialogButton nunca habría sido distinta JOptionPane.YES_NO_OPTION nada.

por el Javadoc para showConfirmDialog:

Devuelve: un entero que indica la opción seleccionada por el usuario

+0

wow funcionó! Empecé a usar 'showConfirmDialog' y no lo entendí tan bien, aunque leí el Javadoc. Pero ahora con mi error y tu explicación despejó mucha confusión. Jugaré con esto más y veré qué puedo pensar. ¡¡¡GRACIAS!!! – Sobiaholic

+3

@iMohammad, ¿por qué no lees el tutorial de Swing? El tutorial contiene ejemplos de trabajo, para todas las preguntas que ha estado haciendo en los últimos días. – camickr

+1

Enlace a la sugerencia de camickr: http://docs.oracle.com/javase/tutorial/uiswing/ – ziesemer

26

probar esto,

int dialogButton = JOptionPane.YES_NO_OPTION; 
int dialogResult = JOptionPane.showConfirmDialog(this, "Your Message", "Title on Box", dialogButton); 
if(dialogResult == 0) { 
    System.out.println("Yes option"); 
} else { 
    System.out.println("No Option"); 
} 
+0

¿Qué puedo poner en lugar de 'esto'? Estoy haciendo esto en un contexto estático. –

6
int opcion = JOptionPane.showConfirmDialog(null, "Realmente deseas salir?", "Aviso", JOptionPane.YES_NO_OPTION); 

if (opcion == 0) { //The ISSUE is here 
    System.out.print("si"); 
} else { 
    System.out.print("no"); 
} 
Cuestiones relacionadas