java gui使用分割函数在文本区域中显示
嗨,我试图在文本区域内使用拆分功能,这样它只会向用户显示某些信息,目前我试图使用GUI界面中常规编程中使用的典型方法,但我认为我没有正确实现它java gui使用分割函数在文本区域中显示,java,swing,user-interface,frontend,Java,Swing,User Interface,Frontend,嗨,我试图在文本区域内使用拆分功能,这样它只会向用户显示某些信息,目前我试图使用GUI界面中常规编程中使用的典型方法,但我认为我没有正确实现它 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: JFileChooser choo
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
File f = chooser.getSelectedFile();
String filename = f.getAbsolutePath();
String st;
String[] setdate = null;
String[] submission = null;
String[] title = null;
String[] value = null;
try
{
FileReader reader = new FileReader (filename);
BufferedReader br = new BufferedReader(reader);
jTextArea1.read(br, null);
br.close();
jTextArea1.requestFocus();
while ((st = br.readLine()) != null) {
System.out.println(st);
if(st.contains("TITLE"))
title = st.split(":");
if(st.contains("DATE SET"))
setdate = st.split(":");
if(st.contains("SUBMISSION"))
submission = st.split(":");
if(st.contains("VALUE:"))
value = st.split(":");
}
}
catch (Exception e ) {
JOptionPane.showMessageDialog( null, e);
}
}
当前,您打开了缓冲阅读器
,用它读取一些内容,然后直接关闭它。然后,您希望使用刚才关闭的读取器再次阅读br.readLine()
br.close()代码>应在最后
块中完成
try (FileReader reader = new FileReader(filename); BufferedReader br = new BufferedReader(reader)) {
jTextArea1.read(br, null);
jTextArea1.requestFocus();
while ((st = br.readLine()) != null) {
System.out.println(st);
if (st.contains("TITLE"))
title = st.split(":");
if (st.contains("DATE SET"))
setdate = st.split(":");
if (st.contains("SUBMISSION"))
submission = st.split(":");
if (st.contains("VALUE:"))
value = st.split(":");
}
} catch (Exception e) {
JOptionPane.showMessageDialog(null, e);
}
使用JTextArea的read(…)方法的要点是从文件中读取数据并将数据添加到文本区域
因此,在调用该方法之后,文件中的所有数据都已被读取
如果要在将数据添加到文本区域之前解析数据,则不应使用read(…)方法。相反,您只需从文件中读取每行数据,然后使用JTextArea的append(…)
方法添加数据
if (st.contains("TITLE"))
title = st.split(":");
另外,我不知道您的文件的格式是什么,但是您希望代码做什么。每次读取包含标题的行时,都会创建一个新数组。我怀疑您应该创建数组来获取数据,然后使用append(…)
方法将数据添加到文本区域
但是没有明确的要求,我们只是猜测。你的实际问题是什么?好的,你分割了这个值,然后呢?你的错误还有一个完整的堆栈跟踪。把它包括在你的计划中question@Stultuske在JTextArea中显示它我认为finally块中的close文件不起作用为什么不呢?我调整了任何可能出现的范围问题,IOexception从未在相应的try语句的主体中抛出,我认为br仍然超出try块的范围Yup br.close after finally仍然是一个问题:/n那么您没有更新BufferedReader br=null
甚至在第一次之前,请尝试。我现在将其更新为try with resource
,从而消除了所有问题
jTextArea1.read(br, null);
if (st.contains("TITLE"))
title = st.split(":");