我正在尝试添加一个JFileChooser来选择一个父目录,并允许用户输入文件的名称。我知道showSaveDialogshowOpenDialog方法,但是我不想创建一个新窗口。

这是我到目前为止的内容:

public class BrowserTest extends JFrame {

    private JPanel contentPane;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    BrowserTest frame = new BrowserTest();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
    public BrowserTest() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);
        JFileChooser browser = new JFileChooser();
        browser.setFileFilter(new FileFilter() {
            @Override
            public String getDescription() {
                return "A .extension file";
            }
            @Override
            public boolean accept(File f) {
                return f.isDirectory();
            }
        });
        browser.setDialogType(JFileChooser.SAVE_DIALOG);
        browser.setSelectedFile(new File("*.extension"));
        browser.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                final String action = e.getActionCommand();
                if(action.equals(JFileChooser.APPROVE_SELECTION)) {
                    System.out.println("trigger");
                    File f = browser.getCurrentDirectory();
                    System.out.println(f);
                }
                if(action.equals(JFileChooser.CANCEL_SELECTION))
                    JOptionPane.showConfirmDialog(null, "Start without saving?", "No save directory selected.", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE);
            }
        });
        contentPane.add(browser);
        revalidate();
    }
}


由于某些原因,仅当我选择文件时,按下保存按钮才会执行System.out.println("trigger");。有没有一种方法可以直接收听保存按钮的声音?

最佳答案

您可以使用以下代码访问文件选择器的默认按钮,然后将自己的侦听器添加到该按钮:

JButton defaultButton = browser.getUI().getDefaultButton(browser);

关于java - 嵌入JFileChooser,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57514452/

10-11 04:10