【问题标题】:Using ActionListener to Read a File Into a JTextArea使用 ActionListener 将文件读入 JTextArea
【发布时间】:2020-06-17 03:14:01
【问题描述】:

我想在单击按钮时读取文件内容的 Java Swing 框架中创建一个JTextArea。我创建了一个JButton,文本区域并为按钮添加了一个ActionListener,但我不知道如何使actionPerformed方法在单击按钮后读取文件。

这是我的代码:

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

public class JavaGui extends JFrame implements ActionListener {
    JButton btn;
    JTextArea jtxt = new JTextArea(50, 50);

    public JavaGui() {
        super("This is the Title");
        setLayout(new FlowLayout());
        btn = new JButton("Click Here");
        btn.addActionListener(this);
        add(btn);
        add(jtxt);
    }

    public static void main(String[] args) throws IOException {
        //Open file for reading content
        FileInputStream file = new FileInputStream("abc.txt");
        Scanner scnr = new Scanner(file);
        System.out.println(file.nextLine());

        //Create the JFrame window
        JavaGui obj = new JavaGui();
        obj.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        obj.setSize(500, 500);
        obj.setVisible(true);
    }

    public void actionPerformed(ActionEvent e){
        // how to do this? 
    }
}

【问题讨论】:

  • 你到底在哪里挣扎?你看,有很多很好的资源可以解释如何用 Java 读取文件。或者解释如何将文本推送到文本区域。
  • 所以,您可能有两个问题,尽管我可以提炼出一个。首先,如何读取文件的内容,其次,如何附加或设置文本区域的文本。您可能应该花一点时间来研究这些事情是如何作为单独的概念完成的,考虑到JTextArea 将需要String 的文本
  • 现在,说了这么多,如果你不知道这一点可以原谅,但是JTextArea实际上可以直接读取文件的内容???? - for example
  • 请参阅:stackoverflow.com/questions/5880169/…,了解读取和写入文件的工作示例。
  • 请注意:来到这里,倾诉你的问题,然后走开,而不是及时回应 cmets 在这里也不受欢迎。这不是“放下你的家庭作业,第二天回来取结果”的服务。

标签: java swing file-io actionlistener jtextarea


【解决方案1】:

这样就可以了

@Override
public void actionPerformed( ActionEvent e )
{
    if( e.getSource() == btn ) // your button 
    {
        doAction();
    }
}

doAction() 包含点击按钮引用btn时需要运行的逻辑

void doAction()
{
    StringBuilder sb = new StringBuilder();
    try( BufferedReader br = Files.newBufferedReader( Paths.get( "filename.txt" ) ) )
    {
        String line;
        while( ( line = br.readLine() ) != null )
        {
            sb.append( line ).append( "\n" );
        }
    }
    catch( IOException e )
    {
        System.err.format( "IOException: %s%n", e );
    }
    jtxt.setText( sb.toString() );
}

【讨论】:

  • 1) 请参阅JTextComponent.read(Reader, Object) 了解更简单的加载文本文件的方法。 2) SO 不是编码服务。我的第一条评论是关于一个人应该需要的所有答案,以便进行尝试并在遇到问题时回复我们。 3) BTW - jtxt.setText( sb.toString() ); 应该在 try 块内。如果失败,那么设置文本就没有什么意义了。
猜你喜欢
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 2016-05-09
  • 2012-05-18
  • 1970-01-01
相关资源
最近更新 更多