在JTextArea中打开,编辑和保存文本为.txt文件 [英] Opening, Editing and Saving text in JTextArea to .txt file

查看:459
本文介绍了在JTextArea中打开,编辑和保存文本为.txt文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在搞java swing,并试图用JTextArea打开一个包含现有数据的文本文件。它似乎没有保存任何更改,无论我尝试过的不同的东西。

以下代码读取文本文件罚款,但不写(显然)。

如果有人可以请告诉我如何成功地将更改保存到JTextArea,我将是非常棒的。

  package funwithswing; 


import java.awt。*;
import javax.swing。*;
import java.io. *;
import java.util.Scanner;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
$ b public class AllDataGUI extends JFrame {
$ b $ public AllDataGUI(){
fileRead();
个面板();
}

private String storeAllString =;
私人JButton saveCloseBtn =新JButton(保存更改并关闭);
private JButton closeButton = new JButton(Exit Without Saving);
private JFrame frame = new JFrame(Viewing All Program Details);
private JTextArea textArea = new JTextArea(storeAllString,0,70);


私人JButton getCloseButton(){
return closeButton;


private void fileRead(){
try {
FileReader read = new FileReader(CompleteData.txt);
扫描仪扫描=新扫描仪(读取); ($)b $ b while(scan.hasNextLine()){
String temp = scan.nextLine()+\\\
;
storeAllString = storeAllString + temp;

$ b catch(异常异常)
{
exception.printStackTrace();



private void fileWrite(){
try {
FileWriter write = new FileWriter(CompleteData.txt);
textArea.write(write);
}
catch(Exception e){
e.printStackTrace();


$ b $ private void panels(){
JPanel panel = new JPanel(new GridLayout(1,1));
panel.setBorder(new EmptyBorder(5,5,5));
JPanel rightPanel = new JPanel(new GridLayout(15,0,10,10));
rightPanel.setBorder(新的EmptyBorder(15,5,5,10));
JTextArea textArea = new JTextArea(storeAllString,0,70);
JScrollPane scrollBarForTextArea = new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_​​AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_​​AS_NEEDED);
panel.add(scrollBarForTextArea);
frame.add(panel);
frame.getContentPane()。add(rightPanel,BorderLayout.EAST);
rightPanel.add(saveCloseBtn);
rightPanel.add(closeButton);
closeButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
frame.dispose();

}
});
frame.setSize(1000,700);
frame.setVisible(true);
frame.setLocationRelativeTo(null);


$ b private void saveBtn(){


}
pre>

解决方案

在你的代码中有一些错误,我修改了这些。编译并运行下面的代码这将解决您的问题。

  import java.awt。*; 
import javax.swing。*;
import java.io. *;
import java.util.Scanner;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
$ b public class AllDataGUI extends JFrame {
$ b $ public AllDataGUI(){
fileRead();
个面板();
}

private String storeAllString =;
私人JButton saveCloseBtn =新JButton(保存更改并关闭);
private JButton closeButton = new JButton(Exit Without Saving);
private JFrame frame = new JFrame(Viewing All Program Details);
// private JTextArea textArea = new JTextArea(storeAllString,0,70);
private JTextArea textArea = new JTextArea();


私人JButton getCloseButton(){
return closeButton;


private void fileRead(){
try {
FileReader read = new FileReader(CompleteData.txt);
扫描仪扫描=新扫描仪(读取); ($)b $ b while(scan.hasNextLine()){
String temp = scan.nextLine()+\\\
;
storeAllString = storeAllString + temp;
}
textArea.setText(storeAllString);

catch(异常异常)
{
exception.printStackTrace();




$ b private void panels(){
JPanel panel = new JPanel(new GridLayout(1,1)) ;
panel.setBorder(new EmptyBorder(5,5,5));
JPanel rightPanel = new JPanel(new GridLayout(15,0,10,10));
rightPanel.setBorder(新的EmptyBorder(15,5,5,10));
// JTextArea textArea = new JTextArea(storeAllString,0,70);
JScrollPane scrollBarForTextArea = new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_​​AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_​​AS_NEEDED);
panel.add(scrollBarForTextArea);
frame.add(panel);
frame.getContentPane()。add(rightPanel,BorderLayout.EAST);
rightPanel.add(saveCloseBtn);
rightPanel.add(closeButton);
closeButton.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e)
{
frame.dispose();

}
});
saveCloseBtn.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){
saveBtn();
frame.dispose();

}
});
frame.setSize(1000,700);
frame.setVisible(true);
frame.setLocationRelativeTo(null);


$ b $ private void saveBtn(){
File file = null;
FileWriter out = null;


尝试{
file = new File(CompleteData.txt);
out = new FileWriter(file);
out.write(textArea.getText());
out.close();
} catch(FileNotFoundException e){
e.printStackTrace();
} catch(IOException e){
e.printStackTrace();

$ b $ public static void main(String [] arg)
{
AllDataGUI();
}
}


I am messing around with java swing and am trying to open a text file containing existing data with a JTextArea. It doesn't seem to be saving any changes regardless of the different things I have tried.

Below is code that reads the text file fine, but doesn't write it (obviously).

If someone could please advise me as to how I could successfully save changes to the JTextArea I would be greatful.

package funwithswing;


import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.util.Scanner;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AllDataGUI extends JFrame{   

    public AllDataGUI(){
        fileRead();
        panels();         
    }

    private String storeAllString="";
    private JButton saveCloseBtn = new JButton("Save Changes and Close");
    private JButton closeButton = new JButton("Exit Without Saving");
    private JFrame frame=new JFrame("Viewing All Program Details");
    private JTextArea textArea = new JTextArea(storeAllString,0,70);


    private JButton getCloseButton(){
        return closeButton;
     }     

    private void fileRead(){
        try{    
          FileReader read = new FileReader("CompleteData.txt");
          Scanner scan = new Scanner(read);
             while(scan.hasNextLine()){
              String temp=scan.nextLine()+"\n";
              storeAllString=storeAllString+temp;
             }
      }
        catch (Exception exception)
         {
         exception.printStackTrace();
         }
    }      

    private void fileWrite(){
        try{
            FileWriter write = new FileWriter ("CompleteData.txt");
            textArea.write(write);
        }
        catch (Exception e){
            e.printStackTrace();
        }         
    }

    private void panels(){        
         JPanel panel = new JPanel(new GridLayout(1,1));
         panel.setBorder(new EmptyBorder(5, 5, 5, 5));
         JPanel rightPanel = new JPanel(new GridLayout(15,0,10,10));
         rightPanel.setBorder(new EmptyBorder(15, 5, 5, 10));
         JTextArea textArea = new JTextArea(storeAllString,0,70);
          JScrollPane scrollBarForTextArea=new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
          panel.add(scrollBarForTextArea); 
          frame.add(panel);
         frame.getContentPane().add(rightPanel,BorderLayout.EAST);
         rightPanel.add(saveCloseBtn);
          rightPanel.add(closeButton);
          closeButton.addActionListener(new ActionListener() {
                  public void actionPerformed(ActionEvent e)
                    {
                        frame.dispose();

                    }
        });
           frame.setSize(1000, 700);
           frame.setVisible(true);   
           frame.setLocationRelativeTo(null);

}

    private void saveBtn(){

  }
}

解决方案

There are some mistakes in your code, I have modified those. Compile and run the below code This will solv your problem.

import java.awt.*;
import javax.swing.*;
import java.io.*;
import java.util.Scanner;
import javax.swing.border.EmptyBorder;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class AllDataGUI extends JFrame{   

    public AllDataGUI(){
        fileRead();
        panels();         
    }

    private String storeAllString="";
    private JButton saveCloseBtn = new JButton("Save Changes and Close");
    private JButton closeButton = new JButton("Exit Without Saving");
    private JFrame frame=new JFrame("Viewing All Program Details");
   // private JTextArea textArea = new JTextArea(storeAllString,0,70);
    private JTextArea textArea = new JTextArea();


    private JButton getCloseButton(){
        return closeButton;
     }     

    private void fileRead(){
        try{    
          FileReader read = new FileReader("CompleteData.txt");
          Scanner scan = new Scanner(read);
             while(scan.hasNextLine()){
              String temp=scan.nextLine()+"\n";
              storeAllString=storeAllString+temp;
             }
             textArea.setText(storeAllString);
      }
        catch (Exception exception)
         {
         exception.printStackTrace();
         }
    }      



    private void panels(){        
         JPanel panel = new JPanel(new GridLayout(1,1));
         panel.setBorder(new EmptyBorder(5, 5, 5, 5));
         JPanel rightPanel = new JPanel(new GridLayout(15,0,10,10));
         rightPanel.setBorder(new EmptyBorder(15, 5, 5, 10));
        // JTextArea textArea = new JTextArea(storeAllString,0,70);
          JScrollPane scrollBarForTextArea=new JScrollPane(textArea,JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
          panel.add(scrollBarForTextArea); 
          frame.add(panel);
         frame.getContentPane().add(rightPanel,BorderLayout.EAST);
         rightPanel.add(saveCloseBtn);
          rightPanel.add(closeButton);
          closeButton.addActionListener(new ActionListener() {
                  public void actionPerformed(ActionEvent e)
                    {
                        frame.dispose();

                    }
        });
          saveCloseBtn.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {
                saveBtn();
                frame.dispose();

            }
        });
           frame.setSize(1000, 700);
           frame.setVisible(true);   
           frame.setLocationRelativeTo(null);

}

    private void saveBtn(){
        File file = null;
        FileWriter out=null;


        try {
            file = new File("CompleteData.txt");
            out = new FileWriter(file);     
            out.write(textArea.getText());
            out.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
  }
    public static void main(String[] arg)
    {
        new AllDataGUI();
    }
}

这篇关于在JTextArea中打开,编辑和保存文本为.txt文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆