Question

I am having some trouble using the JFileChooser. Whenever I run the program if I click the "cancel" button right away without selecting a file it will display "hello" and if I click open, it will not do anything. On other hand, if I select a file and click open it will start to display "Hello" (call the createFile method) and will display "hello" if I click "cancel".

My question is how can I find out which button was clicked and to do a specific thing for each like call the die function when clicked cancel and call the createFile function when open is clicked.

I was thinking of something like

if(e.getSource() == "Something_I_Dont_know") { do this}

Here is my code:

import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;


public class Grading{

public static void main(String[] arg){

 new MFrame();

}


}// end of class Grading

class MFrame extends JFrame{

private JCheckBox cum,uc,ucs;
private JButton calc, clear, exit;
private ButtonGroup bg;
private JTextArea display;
private JFileChooser input;

public MFrame(){

    setVisible( true );
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(550,550);

    input = new JFileChooser();
    add( input );
    input.addActionListener(
        new ActionListener(){
            public void actionPerformed( ActionEvent e ){
                //die();
                createFile();
            }
        }

    );

    setLayout( new FlowLayout() );

    pack();


}// end of constructor

public double gpa(){
 return 1.0;
}// end of gpa method

public void createFile(){
    System.out.println("Hello");
}

public void die(){
    System.exit(0);
}

}// end of MFRAME CLASS

Was it helpful?

Solution

Use the result of the appropriate showDialog method to determine which button was clicked

JFileChooser input = new JFileChooser();
int result = input.showSaveDialog(this);
if (result == JFileChooser.APPROVE_OPTION) {
    createFile();
} else if (result == JFileChooser.CANCEL_OPTION) {
    System.out.println("Cancel was selected");
}

Note: Clicking the X button on the JFileChooser dialog also triggers the CANCEL_OPTION.

Read How to Use File Choosers

OTHER TIPS

When initializing components:

fileChooser.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent evt) {
            fileChooserActionPerformed(evt);
        }
});

The action listener above calls the following method:

private void fileChooserActionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals(javax.swing.JFileChooser.APPROVE_SELECTION)) {
        System.out.println("approve selection");
    } else if (e.getActionCommand().equals(javax.swing.JFileChooser.CANCEL_SELECTION)) {
        System.out.println("cancel selection");
    }
}

NOTE: a file/folder must be selected for the approve selection to work

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top