3

ボタンをクリックすると、JFileChooser がポップアップ表示されます。私はこれを試しました

JButton browse= new JButton("Browse");
add(browse);
browse.addActionListener(new ClassBrowse());

public class ClassBrowse implements ActionListener {
    public void actionPerformed(ActionEvent e) {
    int returnVal = fileChooser.showOpenDialog(this);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            File file = fileChooser.getSelectedFile();
            try {
              // return the file path 
            } catch (Exception ex) {
              System.out.println("problem accessing file"+file.getAbsolutePath());
            }
        } 
        else {
            System.out.println("File access cancelled by user.");
        }       
    }   
}

上記のエラーが発生しますThe method showOpenDialog(Component) in the type JFileChooser is not applicable for the arguments (ClassName.ClassBrowse)

また、完全なファイル パスを返すようにします。どうすればいいですか?

4

3 に答える 3

1

次のように、actionPerformed でファイル名文字列を保持するインスタンス変数を設定できます。

private String fileName;
.......
your code
.......
public void actionPerformed(ActionEvent e) {
int returnVal = fileChooser.showOpenDialog((Component)e.getSource());
    if (returnVal == JFileChooser.APPROVE_OPTION) {
        File file = fileChooser.getSelectedFile();
        try {
           fileName = file.toString();
        } catch (Exception ex) {
          System.out.println("problem accessing file"+file.getAbsolutePath());
        }
    } 
    else {
        System.out.println("File access cancelled by user.");
    }       
}   
于 2013-05-03T05:12:13.263 に答える
1
  1. ActionListenerではないため、ファイル チューザーにComponent渡すことはできません。this
  2. File#getCanonicalPathファイルの完全なパスを取得するために見ることができますが、 a のみを返す(または戻り値の型を返さない)returnため、それはできません。ただし、他の変数を設定したり、別のメソッドを呼び出したり、またはのテキストを設定したりすることもできます...たとえば...actionPerformedvoidJLabelJTextField
于 2013-05-03T05:05:21.723 に答える
0

JButtonが入っているコンテナ(JFrame、JDialog、JAppletなど)を渡すことができます

fileChooser.showOpenDialog()

ファイルチューザーは、そのコンテナーの上にモーダル ダイアログとして開きます。

于 2013-05-03T05:56:16.153 に答える