等待用户输入Java Swing

等待用户输入Java Swing,java,swing,Java,Swing,我正在使用JavaSwing创建一个非常基本的UI。当我运行该程序时,将打开一个窗口,其中包含一条消息和一个浏览按钮(使用frame和JButtons)。单击浏览按钮,将打开另一个窗口以导航到该文件。我通过在Browse按钮的click事件上调用FileChooser实现了这一点。但是,我的程序不等待用户输入。带有浏览按钮的第一个窗口打开,程序继续执行,并在没有选择任何文件的情况下以错误告终。在提供用户输入之前,如何停止执行? 在一个论坛中,有人建议使用浏览器的showOpenDialog()方

我正在使用JavaSwing创建一个非常基本的UI。当我运行该程序时,将打开一个窗口,其中包含一条消息和一个浏览按钮(使用frame和JButtons)。单击浏览按钮,将打开另一个窗口以导航到该文件。我通过在Browse按钮的click事件上调用FileChooser实现了这一点。但是,我的程序不等待用户输入。带有浏览按钮的第一个窗口打开,程序继续执行,并在没有选择任何文件的情况下以错误告终。在提供用户输入之前,如何停止执行? 在一个论坛中,有人建议使用浏览器的showOpenDialog()方法,但这会直接打开一个浏览窗口,而我想让用户点击浏览按钮

我的代码在下面

    frame.setLayout(new FlowLayout());
    // set up a file picker component
    JFilePicker filePicker = new JFilePicker("Pick a file", "Browse...");
    filePicker.setMode(JFilePicker.MODE_OPEN);
    filePicker.addFileTypeFilter(".jpg", "JPEG Images");
    filePicker.addFileTypeFilter(".mp4", "MPEG-4 Videos");

    // access JFileChooser class directly
    JFileChooser fileChooser = filePicker.getFileChooser();
    fileChooser.setCurrentDirectory(new File("C:/"));
    // add the component to the frame
    frame.add(filePicker);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(520, 100);
    frame.setLocationRelativeTo(null);    // center on screen
    frame.setVisible(true);
    System.out.println();

JPicker是一个自定义类,它创建一个文件选择器,并在单击浏览按钮时设置要执行的操作。当然,您可以将JFrame设置为在其“初始化”结束时可见。您需要在startup类的main()方法中执行此操作。你的在哪里

(创建人:Nam Ha Minh)作为Java组件应用于JFrame,以便在GUI开发中节省一点时间。我个人只会在JButtonActionPerformed事件中直接使用JFileChooser。如果您正确地遵循了说明,那么您会发现您需要一个只有意义的main()方法。您的应用程序启动类应该是这样的:

import java.awt.FlowLayout;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class TestJFilePicker extends JFrame {

    private static final long serialVersionUID = 1L;

    public TestJFilePicker() {
        super("Test using JFilePicker");

        setLayout(new FlowLayout());

        // set up a file picker component
        JFilePicker filePicker = new JFilePicker("Pick a file", "Browse...");
        filePicker.setMode(JFilePicker.MODE_OPEN);
        filePicker.addFileTypeFilter(".jpg", "JPEG Images");
        filePicker.addFileTypeFilter(".mp4", "MPEG-4 Videos");

        // access JFileChooser class directly
        JFileChooser fileChooser = filePicker.getFileChooser();
        fileChooser.setCurrentDirectory(new File("D:/"));

        // add the component to the frame
        add(filePicker);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(520, 100);
        setLocationRelativeTo(null);    // center on screen
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new TestJFilePicker().setVisible(true);
            }
        });
    }

}
上面的代码(这是Nam Ha Minh的工作)当然假设您已经将JFilePickerFileTypeFilter类文件应用于您的项目。没有它们,上述代码将无法工作