2011-12-31 23 views
48

Tôi đã tạo một JOptionPane và nó chỉ có hai nút YES_NO_OPTION.JOptionPane CÓ/Không có tùy chọn Xác nhận Hộp thoại Số phát hành

Sau khi JOptionPane.showConfirmDialog bật ra, tôi muốn nhấp vào YES BUTTON để tiếp tục mở JFileChooser và nếu tôi nhấp vào NO BUTTON thì nên hủy thao tác.

Dường như khá dễ dàng nhưng tôi không chắc là đâu là sai lầm của tôi.

Đoạn Mã:

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

    } 
} 

Trả lời

89

Bạn cần phải nhìn vào giá trị trả về của cuộc gọi để showConfirmDialog. Tức là .:

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

Bạn đang thử nghiệm chống lại dialogButton, mà bạn đang sử dụng để thiết lập các nút đó sẽ được hiển thị bằng hộp thoại, và biến này không bao giờ được cập nhật - vì vậy dialogButton sẽ không bao giờ có bất cứ điều gì khác hơn là JOptionPane.YES_NO_OPTION.

mỗi Javadoc cho showConfirmDialog:

Returns: một số nguyên cho thấy sự lựa chọn của người dùng

+0

wow nó làm việc! Tôi chỉ bắt đầu sử dụng 'showConfirmDialog' và tôi đã không nhận được nó rất tốt, mặc dù tôi đọc Javadoc. Nhưng bây giờ với sai lầm của tôi và lời giải thích của bạn nó xóa rất nhiều nhầm lẫn. Tôi sẽ chơi với điều này nhiều hơn và xem những gì tôi có thể đi lên với. CẢM ƠN!!! – Sobiaholic

+3

@iMohammad, tại sao bạn không đọc hướng dẫn Swing ?? Hướng dẫn này chứa các ví dụ làm việc, cho tất cả các câu hỏi bạn đã hỏi trong vài ngày qua. – camickr

+1

Liên kết với đề xuất của camickr: http://docs.oracle.com/javase/tutorial/uiswing/ – ziesemer

26

Hãy thử này được chọn,

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

Tôi có thể đặt gì thay vì 'this'? Tôi đang làm điều này trong một bối cảnh tĩnh. –

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"); 
} 
Các vấn đề liên quan