簡體   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