2011-12-31 14 views
48

Utworzono JOptionPane i mają tylko dwa przyciski YES_NO_OPTION.JOptionPane TAK/NIE Opcje Potwierdź okno dialogowe Wydanie

Po JOptionPane.showConfirmDialog wyskoczy, chcę kliknij YES BUTTON kontynuować otwieranie JFileChooser a jeśli kliknąłem NO BUTTON należy anulować operację.

Wydaje się dość łatwe, ale nie jestem pewien, gdzie jest mój błąd.

Code Snippet:

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) { 

    } 
} 

Odpowiedz

89

Trzeba spojrzeć na wartości zwracanej wywołaniu showConfirmDialog. Tj .:

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

Byłaś testowania przeciwko dialogButton, które zostały przy użyciu ustawić przyciski, które powinny być wyświetlane przez okna, a ta zmienna nie została zaktualizowana - tak dialogButton nigdy nie byłby coś innego niż JOptionPane.YES_NO_OPTION.

Per Javadoc dla showConfirmDialog:

Returns: liczba całkowita wskazująca opcję wybraną przez użytkownika

+0

wow to działało! Właśnie zacząłem używać 'showConfirmDialog' i nie dostałem tego tak dobrze, chociaż czytałem Javadoc. Ale teraz, z moim błędem i wyjaśnieniami, oczyściło to wiele zamieszania. Będę się tym bawił i zobaczę, co mogę wymyślić. DZIĘKI!!! – Sobiaholic

+3

@Mohammad, dlaczego nie czytasz samouczka Swinga? Samouczek zawiera działające przykłady dla wszystkich pytań zadawanych w ciągu ostatnich kilku dni. – camickr

+1

Link do sugestii camickr: http://docs.oracle.com/javase/tutorial/uiswing/ – ziesemer

26

spróbować tego,

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

Co mogę umieścić zamiast "tego"? Robię to w statycznym kontekście. –

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"); 
}