【问题标题】:Button to select file and read text into GUI (JTextArea)用于选择文件并将文本读入 GUI (JTextArea) 的按钮
【发布时间】:2016-08-09 13:21:09
【问题描述】:

我正在使用方法和类创建 GUI,并尝试创建一个按钮,用户可以在其中选择它,然后选择一个文件。然后,该文件会将文件中存储的内容读入 textarea/textfield/JLabel。谁能帮我写代码,我不知道如何编码,所以我可以选择按钮来选择一个文件,然后它将文本读入 GUI。

public void addLoadFile(){
        btnLoadFile = new JButton("Load file of Books");
        btnLoadFile.setBounds(415, 30, 150, 20);
        btnLoadFile.addActionListener(this);
        panelLoadFile.add(btnLoadFile); 

        textArea = new JTextArea();


    }

    class this implements ActionListener {
        @Override
        JFileChooser fileChooser = new JFileChooser();
        int ret = fileChooser.showOpenDialog(this);
        if(ret== JFileChooser.APPROVE_OPTION)
        {
            File f= fileChooser.getSelectedFile();
            try
            {
                FileReader r=new FileReader(f);
                area.read(4,"");
            }
            catch (Exception ee)
        }
    System.out.prinkln("");
    }

【问题讨论】:

标签: java user-interface actionlistener filechooser


【解决方案1】:

以下 sn-p 可能会有所帮助:

为按钮添加监听器

 jButton1.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            jButton1ActionPerformed(evt);
        }
    });

所执行操作的代码

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    JFileChooser fileChooser = new JFileChooser();
    FileNameExtensionFilter filter = new FileNameExtensionFilter(
            "Text Files(*.txt)", "txt");
    fileChooser.setFileFilter(filter);
    fileChooser.setCurrentDirectory(new File(System
            .getProperty("user.home")));
    int result = fileChooser.showOpenDialog(this);
    if (result == JFileChooser.APPROVE_OPTION) {
        File selectedFile = fileChooser.getSelectedFile();
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader(selectedFile));
            StringBuilder sb = new StringBuilder();
            String line = br.readLine();

            while (line != null) {
                sb.append(line);
                sb.append(System.lineSeparator());
                line = br.readLine();
            }
            String all = sb.toString();
            jTextArea1.setText(all);
        }catch(Exception e){
            e.printStackTrace();
        }finally {
            try {
                br.close();
            } catch (IOException ex) {
                Logger.getLogger(MainFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
}

【讨论】:

  • 尝试在后台线程中运行,例如使用SwingWorkerExecutorService,这样用户界面就不会因大文件而挂起。
猜你喜欢
  • 2013-07-04
  • 1970-01-01
  • 2019-02-22
  • 2013-06-26
  • 2016-10-05
  • 2011-09-15
  • 1970-01-01
  • 2020-06-25
  • 2012-08-31
相关资源
最近更新 更多