JFileChooser - 关于“打开”和“取消”按钮。爪哇

问题描述 投票:0回答:2

我在使用 JFileChooser 时遇到一些问题。每当我运行该程序时,如果我立即单击“取消”按钮而不选择文件,它将显示“hello”,如果我单击“打开”,它将不会执行任何操作。另一方面,如果我选择一个文件并单击“打开”,它将开始显示“Hello”(调用 createFile 方法),如果单击“取消”,它将显示“hello”。

我的问题是如何找出单击了哪个按钮并为每个按钮执行特定的操作,例如单击取消时调用 die 函数并单击打开时调用 createFile 函数。

我在想类似的事情

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

这是我的代码:

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

}// MFRAME 类结束

java swing jframe jfilechooser disambiguation
2个回答
17
投票

使用适当的

showDialog
方法的结果来确定单击了哪个按钮

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

注意:单击

X
对话框上的
JFileChooser
按钮也会触发
CANCEL_OPTION

阅读如何使用文件选择器


2
投票

初始化组件时:

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

上面的动作监听器调用以下方法:

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

注意:必须选择一个文件/文件夹才能批准选择工作

© www.soinside.com 2019 - 2024. All rights reserved.