Java 使用JFileChooser打开文件、读取文件并设置值

Java 使用JFileChooser打开文件、读取文件并设置值,java,swing,user-interface,jfilechooser,Java,Swing,User Interface,Jfilechooser,我试图用这个GUI做的是让用户浏览一个txt文件,然后读取它。当用户单击“读取文件”按钮时,应提示用户选择文件,然后用户将读取文件并设置各种值。我对此有一些问题。首先,我使用scanner尝试设置值,尽管我不确定这是最好的方法。其次,我不确定文件是否正在读取。我可以打开“浏览文件”对话框,但是它会冻结,我必须重新启动eclipse。如何使用JFileChooser读取文件并通过读取来设置值 import javax.swing.*; import java.awt.*;

我试图用这个GUI做的是让用户浏览一个txt文件,然后读取它。当用户单击“读取文件”按钮时,应提示用户选择文件,然后用户将读取文件并设置各种值。我对此有一些问题。首先,我使用scanner尝试设置值,尽管我不确定这是最好的方法。其次,我不确定文件是否正在读取。我可以打开“浏览文件”对话框,但是它会冻结,我必须重新启动eclipse。如何使用JFileChooser读取文件并通过读取来设置值

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.util.Scanner;

    public class Display extends JFrame implements ActionListener {
        private static final int FRAME_WIDTH = 400;
        private static final int FRAME_HEIGHT = 350;

        private static final int FRAME_X_ORIGIN = 100;
        private static final int FRAME_Y_ORIGIN = 75;

        private JFrame mainFrame;
        private JCheckBox avgHSCheckBox;
        private JCheckBox avgTSCheckBox;
        private JCheckBox homeworkSDCheckBox;
        private JCheckBox testSDCheckBox;
        private JRadioButton firstClass;
        private JRadioButton secondClass;
        private JRadioButton thirdClass;
        private JRadioButton fourthClass;
        private JButton readFileButton;
        private JButton exitButton;
        private JButton statsButton;
        private JButton clearButton;

        static int numberOfClasses = 3;
        static int numberOfAssignments = 6;
        static int numberOfStudents;
        static int numberOfLabs = 15;
        static int totalHomeworkScore = 0;
        static int totalTestScore = 0;
        static String classYear;
        static String semester;

        public static void main(String[] args) {
            Display frame = new Display();
            frame.setVisible(true);

        }

        public Display() {

            setSize(FRAME_WIDTH, FRAME_HEIGHT);
            setResizable(false);
            setTitle("CSCE155A Course Offering Viewer");
            setLocation(FRAME_X_ORIGIN, FRAME_Y_ORIGIN);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setLayout(new BorderLayout());

            // header
            JPanel header = new JPanel();
            header.setLayout(new GridLayout(2, 1));
            header.setSize(350, 75);
            header.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            header.add(new JLabel("CSCE155A Course Offering Viewer"));
            header.add(new JLabel("First Last"));
            add(header, BorderLayout.NORTH);

            // select stats
            JPanel statsSelect = new JPanel();
            statsSelect.setLayout(new GridLayout(5, 1));
            statsSelect.setSize(100, 100);

            statsSelect.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            statsSelect.add(new JLabel("Please Select: "));
            avgHSCheckBox = new JCheckBox("View Average Homework Score");
            statsSelect.add(avgHSCheckBox);
            avgTSCheckBox = new JCheckBox("View Average Test Score");
            statsSelect.add(avgTSCheckBox);
            homeworkSDCheckBox = new JCheckBox("View SD for Homework Scores");
            statsSelect.add(homeworkSDCheckBox);
            testSDCheckBox = new JCheckBox("View SD for Test Scores");
            statsSelect.add(testSDCheckBox);
            add(statsSelect, BorderLayout.WEST);

            // Course offerings

            JPanel courseOfferings = new JPanel();
            courseOfferings.setLayout(new GridLayout(5, 1));
            courseOfferings.setSize(100, 100);
            courseOfferings.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            courseOfferings.add(new JLabel("Please Select: "));
            firstClass = new JRadioButton(semester + classYear);
            courseOfferings.add(firstClass);
            secondClass = new JRadioButton(semester + classYear);
            courseOfferings.add(secondClass);
            thirdClass = new JRadioButton(semester + classYear);
            courseOfferings.add(thirdClass);
            fourthClass = new JRadioButton(semester + classYear);
            courseOfferings.add(fourthClass);
            add(courseOfferings, BorderLayout.EAST);
            // statistics

            JPanel statistics = new JPanel();
            statistics.setLayout(new GridLayout(5, 1));
            statistics.setSize(200, 150);
            statistics.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            statistics.add(new JLabel("Statistics:"));
            add(statistics, BorderLayout.CENTER);

            // buttons
            JPanel buttons = new JPanel();
            buttons.setLayout(new FlowLayout());
            buttons.setSize(200, 150);
            buttons.setBorder(BorderFactory.createLineBorder(Color.BLACK));
            readFileButton = new JButton("Read File");
            buttons.add(readFileButton);
            exitButton = new JButton("Exit");
            buttons.add(exitButton);
            statsButton = new JButton("Stats");
            buttons.add(statsButton);
            clearButton = new JButton("Clear");
            buttons.add(clearButton);
            add(buttons, BorderLayout.SOUTH);

            avgHSCheckBox.addActionListener(this);
            avgTSCheckBox.addActionListener(this);
            homeworkSDCheckBox.addActionListener(this);
            testSDCheckBox.addActionListener(this);
            firstClass.addActionListener(this);
            secondClass.addActionListener(this);
            thirdClass.addActionListener(this);
            fourthClass.addActionListener(this);
            readFileButton.addActionListener(this);
            exitButton.addActionListener(this);
            statsButton.addActionListener(this);
            clearButton.addActionListener(this);

            setDefaultCloseOperation(EXIT_ON_CLOSE);

        }

        public void actionPerformed(ActionEvent event) {
            Scanner scanner = new Scanner(System.in);
            CourseOffering myCourseOffering = new CourseOffering();
            ComputeStatistics myComputeStatistics = new ComputeStatistics();
            JButton clickedButton = (JButton) event.getSource();
            String buttonText = clickedButton.getText();
            if (buttonText.equals("Read File")) {
                // Create a file chooser
                String filename = File.separator;
                JFileChooser fc = new JFileChooser(new File(filename));
                fc.showOpenDialog(this);
                File selFile = fc.getSelectedFile();

                numberOfClasses = scanner.nextInt();
                for (int i = 0; i < numberOfClasses; i++) {

                    myCourseOffering.setDescription(scanner.next()); // CSCE
                    myCourseOffering.setDescription(scanner.next()); // 155A
                    myCourseOffering.setDescription(scanner.next()); // -
                    myCourseOffering.setDescription(scanner.next()); // Semester
                    semester = myCourseOffering.getDescription();
                    myCourseOffering.setDescription(scanner.next()); // Year
                    classYear = myCourseOffering.getDescription();

                    numberOfStudents = scanner.nextInt(); // Number Of Students
                    myCourseOffering.students = new Student[numberOfStudents];

                    for (int j = 0; j < numberOfStudents; j++) {
                        myCourseOffering.students[j] = new Student();
                        totalTestScore = 0;
                        totalHomeworkScore = 0;
                        // Sets first and last name
                        myCourseOffering.students[j].setFirstName(scanner.next());
                        myCourseOffering.students[j].setLastName(scanner.next());

                        // call assignscores array
                        int[] assignScores = new int[numberOfAssignments];

                        for (int k = 0; k < numberOfAssignments; k++) {
                            assignScores[k] = scanner.nextInt();
                            totalHomeworkScore += assignScores[k];
                        }
                        myCourseOffering.students[j]
                                .setAssignmentScores(assignScores);

                        int[] labScores = new int[numberOfLabs];
                        for (int l = 0; l < numberOfLabs; l++) {
                            labScores[l] = scanner.nextInt();
                            totalHomeworkScore += labScores[l];
                        }
                        myCourseOffering.students[j].setLabScores(labScores);

                        myCourseOffering.students[j].setMidTerm1(scanner.nextInt());
                        totalTestScore += myCourseOffering.students[j]
                                .getMidterm1();

                        myCourseOffering.students[j].setMidterm2(scanner.nextInt());
                        totalTestScore += myCourseOffering.students[j]
                                .getMidterm2();

                        myCourseOffering.students[j]
                                .setFinalExam(scanner.nextInt());
                        totalTestScore += myCourseOffering.students[j]
                                .getFinalExam();

                        myCourseOffering.students[j]
                                .setQuizScore(scanner.nextInt());
                        totalTestScore += myCourseOffering.students[j]
                                .getQuizScore();

                        myCourseOffering.students[j].setAttendanceScore(scanner
                                .nextInt());
                        totalHomeworkScore += myCourseOffering.students[j]
                                .getAttendanceScore();

                        myCourseOffering.students[j].setPatScore(scanner.nextInt());
                        totalTestScore += myCourseOffering.students[j]
                                .getPatScore();

                        myCourseOffering.students[j].setZyanteScore(scanner
                                .nextInt());
                        totalTestScore += myCourseOffering.students[j]
                                .getZyanteScore();

                        myCourseOffering.students[j]
                                .setTotalHomeworkScore(totalHomeworkScore);
                        myCourseOffering.students[j]
                                .setTotalTestScore(totalTestScore);

                    }
                }

            }
        }
    }
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
导入java.io.File;
导入java.io.FileNotFoundException;
导入java.util.Scanner;
公共类显示扩展JFrame实现ActionListener{
专用静态最终整型帧_宽度=400;
专用静态最终整型框架高度=350;
私有静态最终整数帧×原点=100;
私有静态最终整数帧_Y_原点=75;
专用JFrame主机;
专用JCheckBox avgHSCheckBox;
专用JCheckBox avgTSCheckBox;
私人JCheckBox家庭作业dcheckbox;
私有JCheckBox testSDCheckBox;
私人JRadioButton头等舱;
私人JRadioButton二等舱;
私有JRadioButton第三类;
私人JRadioButton第四类;
私有JButton readFileButton;
私有JButton exitButton;
私有JButton statsButton;
私有JButton clearButton;
静态int numberOfClasses=3;
静态int numberOfAssignments=6;
学生的静态智力;
静态int numberOfLabs=15;
静态int totalHomeworkScore=0;
静态int totalTestScore=0;
静态字符串类年;
静态字符串学期;
公共静态void main(字符串[]args){
显示框=新显示();
frame.setVisible(true);
}
公开展览(){
设置尺寸(框宽、框高);
可设置大小(假);
setTitle(“CSCE155A课程提供查看器”);
设置位置(帧X_原点、帧Y_原点);
setDefaultCloseOperation(关闭时退出);
setLayout(新的BorderLayout());
//标题
JPanel头=新的JPanel();
header.setLayout(新的GridLayout(2,1));
集管.设置尺寸(350,75);
header.setboorder(BorderFactory.createLineBorder(Color.BLACK));
header.add(新的JLabel(“CSCE155A课程提供查看器”);
添加(新的JLabel(“第一个-最后一个”);
添加(标题,边框布局。北);
//选择统计数据
JPanel statselect=newjpanel();
statselect.setLayout(新的GridLayout(5,1));
statselect.setSize(100100);
statselect.setboorder(BorderFactory.createLineBorder(Color.BLACK));
statselect.add(新的JLabel(“请选择”);
avgHSCheckBox=新的JCheckBox(“查看平均家庭作业分数”);
statselect.add(avgHSCheckBox);
avgTSCheckBox=新的JCheckBox(“查看平均测试分数”);
statselect.add(avgTSCheckBox);
homeworkSDCheckBox=新的JCheckBox(“查看作业分数的SD”);
statsSelect.add(homeworkSDCheckBox);
testSDCheckBox=newjcheckbox(“查看测试分数的SD”);
statselect.add(testSDCheckBox);
添加(statselect,BorderLayout.WEST);
//课程设置
JPanel courseOfferings=新的JPanel();
课程设置布局(新网格布局(5,1));
课程设置。设置大小(100100);
courseOfferings.setBorder(BorderFactory.createLineBorder(Color.BLACK));
courseOfferings.add(新JLabel(“请选择:”);
头等=新的JRadioButton(学期+学年);
课程设置。添加(头等);
第二课堂=新JRadioButton(学期+学年);
课程设置。添加(第二级);
第三节=新的JRadioButton(学期+学年);
课程设置。添加(第三类);
第四节=新的JRadioButton(学期+学年);
课程设置。添加(第四级);
添加(课程设置,边界布局。东部);
//统计数字
JPanel statistics=新的JPanel();
setLayout(新的GridLayout(5,1));
统计。设置大小(200150);
setboorder(BorderFactory.createLineBorder(Color.BLACK));
添加(新的JLabel(“统计:”);
添加(统计、边界布局、中心);
//钮扣
JPanel按钮=新的JPanel();
按钮.setLayout(新的FlowLayout());
按钮。设置大小(200150);
buttons.setOrder(BorderFactory.createLineBorder(Color.BLACK));
readFileButton=新JButton(“读取文件”);
按钮。添加(readFileButton);
exitButton=新JButton(“退出”);
按钮。添加(exitButton);
statsButton=新的JButton(“Stats”);
按钮。添加(statsButton);
clearButton=新的JButton(“Clear”);
按钮。添加(clearButton);
添加(按钮,边界布局。南部);
avgHSCheckBox.addActionListener(这个);
avgTSCheckBox.addActionListener(这个);
homeworkSDCheckBox.addActionListener(此);
testSDCheckBox.addActionListener(这个);
firstClass.addActionListener(this);
secondClass.addActionListener(此);
thirdClass.addActionListener(此);
addActionListener(this);
readFileButton.addActionListener(此);
addActionListener(这个);
状态按钮