Java GUIでテキストファイルの読み書きを教えます。
一、実験テーマ
二、分析
実験要求は:は、テキスト表示領域と2つのボタン(アーカイブと読み込み) とを含むインターフェースを実現する。読み取りボタンは、ファイルを開いて内容を読み取り、テキストエリアに表示する役割を果たしています。 アーカイブボタンは、テキストエリアの内容をファイルに書き込む役割を果たしています。 簡単に分析してみると、このような要求はオーストリアであることが分かります。知識点を考察するには主に二つの方向があります。 GUIは、インターフェースを描画し、イベントを追加する 。 IOストリームオブジェクトを使用してファイルを読み書きする いい仲間たちは、余計なことを言わないで、これを実現します。
三、実現する
まず、GUIインタフェースを作りましょう。まず、すべてのシンプルなデザイン思想を持って、このような長さを期待します。
このようなレイアウトでは、コンテナにテキスト表示エリアと2つのボタンを直接入れることで、ウィンドウのサイズを適切に調整することができます。
走るのはこんな感じです。
二つのボタンをクリックしてイベントをテストし、コンソールから出力します。
はい、GUIインターフェースの設計が終わりました。次は二つのボタンのためにクリックイベントを作成します。
まず解決するべき問題の一つは「ターゲットファイル」です。ターゲットファイルがファイルシステムから選択されて生成される必要があるかどうかは問題に言及されていませんので、ターゲットファイルのアドレスを一時的にコードに直接付けてもいいです。
初期化ページでは、まずこのファイルパスに対応するファイルオブジェクトを作成します。
1.ターゲットファイルを作成するには、
2.createNewFile()方法はIOExceptionを投げ出します。処理を容易にするために、ここで直接選択して異常を構造方法と主方法から投げ出します。
ターゲットファイルの問題を処理して、プログラムを2回起動して、コンソールの出力を見ることができます。
えっと、書類の処理が成功しました。
次に、2つのボタンにクリックイベントを追加します。以下の処理では、IOストリームの選択に対して、文字ストリームを選択します。
まず、ファイルを読むボタンです。イベントをクリックするロジックは大体次の通りです。
1.ターゲットファイルを作成する入力文字ストリーム
2.入力ストリームからファイルの内容を読み取り、結果を作成する
3.入力ストリームを閉じる
4.読み込んだ結果をテキスト表示エリアに表示する
実装がコードになります:
ニック~
はい、これからは最後の仕事が残っています。アーカイブを完成します。
アーカイブボタンのクリックイベントは以下の通りです。
1.ターゲットファイルの文字出力ストリームを開く
2.現在のテキスト表示エリアの内容を取得する
3.テキスト表示エリアの内容を出力ストリームでファイルに書き込む
4.出力ストリームを閉じる
5.テキスト表示エリアを空にする
最後の一つは私が加えたものです。実はよく知らなくてもいいです。
コードの実装は以下の通りです。
なんですか?テキストボックスの中には何もないと言いましたか?はい、最後に内容をクリアしました。
四、全部のコード
はい、上の機能を全部実現しました。最後にコードをここにまとめます。
(盗作を慎むよ)
二、分析
実験要求は:
三、実現する
まず、GUIインタフェースを作りましょう。まず、すべてのシンプルなデザイン思想を持って、このような長さを期待します。
このようなレイアウトでは、コンテナにテキスト表示エリアと2つのボタンを直接入れることで、ウィンドウのサイズを適切に調整することができます。
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class GUIDemo extends JFrame{
//
private JButton saveButton;
private JButton loadButton;
private TextArea textArea;
//
private Container container;
public GUIDemo() {
// title
super("File Demo");
//
setLayout(new FlowLayout());
//
container = getContentPane();
//
textArea = new TextArea();
saveButton = new JButton("save");
loadButton = new JButton("load");
//
saveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(" ");
}
});
//
loadButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(" ");
}
});
//
container.add(textArea);
container.add(loadButton);
container.add(saveButton);
//
setSize(500, 300);
//
setVisible(true);
}
public static void main(String[] args) {
GUIDemo demo = new GUIDemo();
demo.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}
コードの意味は全部注釈の中にあるので、説明はくどくどしません。走るのはこんな感じです。
二つのボタンをクリックしてイベントをテストし、コンソールから出力します。
はい、GUIインターフェースの設計が終わりました。次は二つのボタンのためにクリックイベントを作成します。
まず解決するべき問題の一つは「ターゲットファイル」です。ターゲットファイルがファイルシステムから選択されて生成される必要があるかどうかは問題に言及されていませんので、ターゲットファイルのアドレスを一時的にコードに直接付けてもいいです。
初期化ページでは、まずこのファイルパスに対応するファイルオブジェクトを作成します。
//
private File targetFile;
...
//
targetFile = new File(TARGET_FILE);
if(targetFile.createNewFile()) {
System.out.println(" , ");
}else {
System.out.println(" ");
}
ここでいくつかの問題に注意する必要があります。1.ターゲットファイルを作成するには、
private static final String TARGET_FILE= "./temp.txt";
方法ではなく、createNewFile()
方法を使用する必要があります。ファイルではなくフォルダとして作成されます。2.createNewFile()方法はIOExceptionを投げ出します。処理を容易にするために、ここで直接選択して異常を構造方法と主方法から投げ出します。
ターゲットファイルの問題を処理して、プログラムを2回起動して、コンソールの出力を見ることができます。
えっと、書類の処理が成功しました。
次に、2つのボタンにクリックイベントを追加します。以下の処理では、IOストリームの選択に対して、文字ストリームを選択します。
まず、ファイルを読むボタンです。イベントをクリックするロジックは大体次の通りです。
1.ターゲットファイルを作成する入力文字ストリーム
2.入力ストリームからファイルの内容を読み取り、結果を作成する
3.入力ストリームを閉じる
4.読み込んだ結果をテキスト表示エリアに表示する
実装がコードになります:
//
loadButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
//
FileReader reader = new FileReader(targetFile);
//
char[] buffer = new char[1024];
//
StringBuffer result = new StringBuffer();
//
int len;
//
while((len = reader.read(buffer)) != -1) {
result.append(buffer,0,len);
}
//
reader.close();
//
textArea.setText(result.toString());
System.out.println(" ");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
ターゲットファイルにmkdir()
を書き込み、プログラムを実行し、Hello World!!
をクリックしてください。ニック~
はい、これからは最後の仕事が残っています。アーカイブを完成します。
アーカイブボタンのクリックイベントは以下の通りです。
1.ターゲットファイルの文字出力ストリームを開く
2.現在のテキスト表示エリアの内容を取得する
3.テキスト表示エリアの内容を出力ストリームでファイルに書き込む
4.出力ストリームを閉じる
5.テキスト表示エリアを空にする
最後の一つは私が加えたものです。実はよく知らなくてもいいです。
コードの実装は以下の通りです。
//
saveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
//
FileWriter writer = new FileWriter(targetFile);
//
String result = textArea.getText();
//
writer.write(result);
//
writer.close();
//
textArea.setText("");
System.out.println(" ");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
テキスト表示エリアにload
を入力し、Hello Java!!
をクリックしてください。なんですか?テキストボックスの中には何もないと言いましたか?はい、最後に内容をクリアしました。
四、全部のコード
はい、上の機能を全部実現しました。最後にコードをここにまとめます。
(盗作を慎むよ)
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.swing.JButton;
import javax.swing.JFrame;
public class GUIDemo extends JFrame{
private static final String TARGET_FILE = "./temp.txt";
//
private JButton saveButton;
private JButton loadButton;
private TextArea textArea;
//
private Container container;
//
private File targetFile;
public GUIDemo() throws IOException {
// title
super("File Demo");
//
setLayout(new FlowLayout());
//
container = getContentPane();
//
targetFile = new File(TARGET_FILE);
if(targetFile.createNewFile()) {
System.out.println(" , ");
}else {
System.out.println(" ");
}
//
textArea = new TextArea();
saveButton = new JButton("save");
loadButton = new JButton("load");
//
saveButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
//
FileWriter writer = new FileWriter(targetFile);
//
String result = textArea.getText();
//
writer.write(result);
//
writer.close();
//
textArea.setText("");
System.out.println(" ");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
//
loadButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
//
FileReader reader = new FileReader(targetFile);
//
char[] buffer = new char[1024];
//
StringBuffer result = new StringBuffer();
//
int len;
//
while((len = reader.read(buffer)) != -1) {
result.append(buffer,0,len);
}
//
reader.close();
//
textArea.setText(result.toString());
System.out.println(" ");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
});
//
container.add(textArea);
container.add(loadButton);
container.add(saveButton);
//
setSize(500, 300);
//
setVisible(true);
}
public static void main(String[] args) throws IOException {
GUIDemo demo = new GUIDemo();
demo.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
}