![](/img/trans.png)
[英]Save a the text from a jTextArea (ie Save As) into a new .txt file
[英]Save JTextArea text to a txt file
我在將文本從JTextArea保存到文本文件時遇到問題。 當我保存數據時,我的文本文件中沒有任何內容。 我覺得我寫錯了輸出。 有沒有更好的方法來編碼? 謝謝您的幫助!
該課程的課程
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
public class SaveClass extends JPanel
{
JPanel cards;
private JPanel card1;
private JTextArea textarea1;
private JFileChooser fc;
public SaveClass()
{
Font mono = new Font("Monospaced", Font.PLAIN, 12);
textarea1 = new JTextArea();
textarea1.setFont(mono);
card1 = new JPanel();
card1.add(textarea1);
cards = new JPanel(new CardLayout());
cards.add(card1, "1");
add(cards, BorderLayout.CENTER);
setBorder(BorderFactory.createTitledBorder("Text here"));
setFont(mono);
}
public String getText1()
{
return this.textarea1.getText();
}
public void Save()
{
SaveClass sa = new SaveClass();
String text = sa.getText1();
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory( new File( "./") );
int actionDialog = chooser.showSaveDialog(this);
if (actionDialog == JFileChooser.APPROVE_OPTION)
{
File fileName = new File(chooser.getSelectedFile( ) + "" );
if(fileName == null)
return;
if(fileName.exists())
{
actionDialog = JOptionPane.showConfirmDialog(this,
"Replace existing file?");
if (actionDialog == JOptionPane.NO_OPTION)
return;
}
try
{
BufferedWriter out = new BufferedWriter(new FileWriter(fileName));
out.write(text);
out.close();
}
catch(Exception e)
{
System.err.println("Error: " + e.getMessage());
}
}
}
}
主程序
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class SaveMain extends JFrame
{
private SaveClass canvas;
private JPanel buttonPanel;
private JButton btnOne;
public SaveMain()
{
super("Save JTextArea text to a txt file");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
canvas = new SaveClass();
buildButtonPanel();
add(buttonPanel, BorderLayout.SOUTH);
add(canvas, BorderLayout.CENTER);
pack();
setSize(800, 800);
setVisible(true);
}
private void buildButtonPanel()
{
buttonPanel = new JPanel();
btnOne = new JButton("Save");
buttonPanel.add(btnOne);
btnOne.addActionListener(new btnOneListener());
}
private class btnOneListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == btnOne)
{
canvas.Save();
}
}
}
public static void main(String[] args)
{
new SaveMain();
}
}
FileWriter pw = new FileWriter ("filename.txt");
txtarea.write(pw); //Object of JTextArea
您只需要兩個語句就可以將JTextArea的內容寫入文件中......
我希望這能幫到您...
我認為問題是您在Main類中創建了一個SaveClass實例,但在Save方法中,您在SaveClass中創建了另一個實例,並從該實例中讀取了該文本。 所以你可能想對Save()方法這樣做:
delete the SaveClass sa = new SaveClass();
接着:
String text = this.getText1();
在我看來,你永遠不會將你的JTextArea添加到JFrame。 更具體地說,您將名為textarea1
的JTextArea添加到名為card1
的JPanel中,但此JPanel永遠不會添加到JFrame中。
編輯:哦,我看到你正在添加SaveClass
,這是一個JPanel到框架(盡管有許多,許多JPanels似乎在這個SaveClass中沒有任何東西)。 但是,當您去調用Save()
方法時,您將創建一個全新的SaveClass。 在這個新的SaveClass中,JTextArea初始化時沒有任何內容,因為它不會向文件寫入任何內容。
你可能需要在out.close()之前使用out.flush()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.