繁体   English   中英

使用JFrame和JFileChooser选择文件

[英]Using JFrame and JFileChooser to select a File

我正在尝试将JFileChooser集成到我的程序中。 本质上,我希望有一个界面来选择要读取到程序中的CSV文件。 我正在尝试使用JFileChooser做到这一点。 我在其他地方看到的示例显示了此操作的完成,但是JFileChooser打开而没有JFrame 有没有办法让JFileChooser成为我的JFrame元素的子元素?

我的代码如下:

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

public class QuitButtonExample extends JFrame {
    JPanel panel = new JPanel();

    public QuitButtonExample() {
        initUI();
        quitButton();
        menu();
        fileChooser();
    }

    private void initUI() {
        JLabel label1 = new JLabel(
            "Selct the .csv file contaning the addresses to be geocoded...");
        label1.setBounds(0, 0, 500, 50);
        panel.add(label1); 
        getContentPane().add(panel);
        setSize(1000, 200);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    private void quitButton() {

        // Quit Button

        panel.setLayout(null);
        JButton quitButton = new JButton("Quit");
        quitButton.setBounds(0, 50, 80, 30);

        quitButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent event) {
                System.exit(0);
            }
        });
        panel.add(quitButton);
        setTitle("Quit Button");
    }

    private void menu() {
        // Menu Bar

        // "File"
        JMenuBar menuBar = new JMenuBar();
        JMenu file = new JMenu("File");
        JMenuItem menuItem = new JMenuItem("Exit"); // eMenuItem
        menuItem.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                System.exit(0);
            }
        });

        file.add(menuItem);
        menuBar.add(file);

        // "Credits"
        JMenu credits = new JMenu("Credits");
        JMenuItem about = new JMenuItem("About...");
        about.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                System.exit(0); // TODO - New window, showing credits for
                        // project
            }
        });

        credits.add(about);
        menuBar.add(credits);
        setJMenuBar(menuBar);
    }

    private void fileChooser() {
        // FileChooser

        JFileChooser chooser = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter(
            "CSV Files", "csv");
        chooser.setFileFilter(filter);
        chooser.setBounds(0, 75, 500, 300);
        panel.add(chooser);
    }

    public static void main(String[] args) {
        System.out.println("Hello World");
        QuitButtonExample ex = new QuitButtonExample();
        ex.setVisible(true);
    }
}

您正在尝试在构造函数旁边调用fileChooser() 改变一个并调用fileChooser()一个内部ActionListener即是否button被点击或Menuitem被按下。 因此,在执行相应的操作后, JFilechooser将进入操作。

编辑

JFileChooser fileChooser = new JFileChooser();
int returnVal = fileChooserAddDoc.showOpenDialog(fileChooser);
if (returnVal == JFileChooser.APPROVE_OPTION) {
     file = fileChooser.getSelectedFile();
     .
     .
}

首先不调用构造函数中的QuitButtonExample

而是创建一个名为Open的菜单Open (例如),并在其中的ActionListener调用该方法

看看如何将文件选择器代码约定用于Java编程语言

该代码可以正常工作。

您正在向JFrame的面板添加JFileChooser(这是JComponent)。 像任何其他JComponent一样,文件选择器嵌套在框架中。 您所看到的是框架(从菜单中显而易见),文件选择器是其组成部分之一。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM