如何将CSV文件读入文本窗格Java

时间:2015-04-19 19:51:28

标签: java csv jtextpane settext

好的我正在做一个课堂上的项目,而且我已经得到了我需要工作的东西(现在。)我现在要做的是当我点击一个按钮时它显示的gui文本窗格中的所有数据。到目前为止它所做的只是打印出Grades(我理解为什么)但我希望它打印出CSV文件中正在解析的内容。我并没有要求任何人神奇地解决我的大部分代码,我只是不知道如何让按钮实际显示所需的结果而且它让我生气,因为我终于得到了我想要的代码但我无法看到结果。 (它在控制台中工作,但是当运行.jar时,不显示任何内容。)

该问题已得到解答阅读下面的评论。代码已被删除。谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

  1. 每次点击JTextPane时,您都不应该创建新的JButton。将该窗格添加到JFrame并在ActionListener中,只需通过setText:

  2. 设置值即可
  3. 您永远不会通过JTextPane将csv文件的内容设置为setText:,但只能通过System.out.println("Student - " + grades[0] + " "+ grades[1] + " Grade - " + grades[2]);

  4. 打印出来

    我在这里以一个例子为例。该示例并非真正基于您发布的代码,因为它需要花费很多精力来查看整个代码并进行更正,但它会显示您需要做的所有事情以使代码正常工作。

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    
    public class Instructor {
    
        public static void main(String[] args) {
            JFrame frame = new JFrame("Frame");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(500,500);
            frame.setLayout(new BorderLayout());
    
            final JTextPane textPane;
            textPane = new JTextPane();
            frame.add(textPane,BorderLayout.CENTER);
    
            JButton button = new JButton("Read CSV");
            button.addActionListener(new ActionListener()  {
                public void actionPerformed(ActionEvent e) {
                    //Reset textpanes content so on every button click the new content of the read file will be displayed
                    textPane.setText("");
                    String fileResult = "";                 
                    try {
                    BufferedReader csvReader = new BufferedReader(new FileReader("myCSV.csv"));
                    String line = null;
                    while ((line = csvReader.readLine()) != null) {
                        //Do your logic here which information you want to parse from the csv file and which information you want to display in your textpane
                        fileResult = fileResult + "\n" +line;
                    }
                    }
                    catch(FileNotFoundException ex) {
                        System.err.println("File was not found");
                    }
                    catch(IOException ioe) {
                        System.err.println("There was an error while reading the file");
                    }
                    textPane.setText(fileResult);
                }
            });
            frame.add(button,BorderLayout.SOUTH);
    
            frame.setVisible(true);
        }
    
    }
    

    所以我做了什么:

    1. 不在JTextpane但在
    2. 中创建ActionListener
    3. 阅读ActionListener中的文件并提供trycatch,以确保在找不到文件或类似此类文件时出现错误处理
    4. 不要通过System.out.println();打印csv的结果,而是通过调用JTextPane方法将结果设置为setText:
    5. 我还添加了LayoutMangerBorderLayout),而不是将JTextPane和按钮添加到JFrame NullLayout。这不是问题的一部分,但如果你有时间,你应该改变这一点,因为根本不推荐NullLayout(代码中为setBounds)。