好的我正在做一个课堂上的项目,而且我已经得到了我需要工作的东西(现在。)我现在要做的是当我点击一个按钮时它显示的gui文本窗格中的所有数据。到目前为止它所做的只是打印出Grades(我理解为什么)但我希望它打印出CSV文件中正在解析的内容。我并没有要求任何人神奇地解决我的大部分代码,我只是不知道如何让按钮实际显示所需的结果而且它让我生气,因为我终于得到了我想要的代码但我无法看到结果。 (它在控制台中工作,但是当运行.jar时,不显示任何内容。)
该问题已得到解答阅读下面的评论。代码已被删除。谢谢你的时间!
答案 0 :(得分:0)
每次点击JTextPane
时,您都不应该创建新的JButton
。将该窗格添加到JFrame
并在ActionListener
中,只需通过setText:
您永远不会通过JTextPane
将csv文件的内容设置为setText:
,但只能通过System.out.println("Student - " + grades[0] + " "+ grades[1] + " Grade - " + grades[2]);
我在这里以一个例子为例。该示例并非真正基于您发布的代码,因为它需要花费很多精力来查看整个代码并进行更正,但它会显示您需要做的所有事情以使代码正常工作。
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);
}
}
所以我做了什么:
JTextpane
但在ActionListener
ActionListener
中的文件并提供try
和catch
,以确保在找不到文件或类似此类文件时出现错误处理System.out.println();
打印csv的结果,而是通过调用JTextPane
方法将结果设置为setText:
。我还添加了LayoutManger
(BorderLayout
),而不是将JTextPane
和按钮添加到JFrame
NullLayout
。这不是问题的一部分,但如果你有时间,你应该改变这一点,因为根本不推荐NullLayout
(代码中为setBounds
)。