Sobiaholic Sobiaholic - 2 months ago 36
Java Question

JOptionPane YES/No Options Confirm Dialog Box Issue -Java

I've created a

JOptionPane
and it only has two buttons
YES_NO_OPTION
.

After
JOptionPane.showConfirmDialog
pops out , I want to click
YES BUTTON
to continue opening the
JFileChooser
and if I clicked
NO BUTTON
it should cancel the operation.

It seems pretty easy but I'm not sure where is my mistake.

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

}
}

Answer

You need to look at the return value of the call to 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
}

You were testing against dialogButton, which you were using to set the buttons that should be displayed by the dialog, and this variable was never updated - so dialogButton would never have been anything other than JOptionPane.YES_NO_OPTION.

Per the Javadoc for showConfirmDialog:

Returns: an integer indicating the option selected by the user