//Sample14
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
* ファイル入出力
*/
public class Sample14 {
private static final String btnSave_code = "Save";
private static final String btnSave_title = "保存";
private static final String btnOpen_code = "Open";
private static final String btnOpen_title = "開く";
private static final String window_title = "ファイル入出力";
private static final int window_height = 400;
private static final int window_width = 640;
private static final int tf02_size = 20;
private static final int tf01_size = 20;
JTextField tf01 = new JTextField("", Sample14.tf01_size);
JTextField tf02 = new JTextField("", Sample14.tf02_size);
/**
* 主処理
*/
public static void main(final String[] args) {
final Sample14 sample = new Sample14();
}
/**
* コンストラクタ(部品をセットしてウィンドウ表示)
*/
Sample14() {
final JFrame f = new JFrame(Sample14.window_title);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JButton btnOpen = new JButton(Sample14.btnOpen_title);
btnOpen.setActionCommand(Sample14.btnOpen_code);
btnOpen.addActionListener(new PushButtonActionListener(f));
final JButton btnSave = new JButton(Sample14.btnSave_title);
btnSave.setActionCommand(Sample14.btnSave_code);
btnSave.addActionListener(new PushButtonActionListener(f));
final JPanel p1 = new JPanel();
p1.add(btnOpen);
p1.add(btnSave);
f.getContentPane().add(p1, BorderLayout.NORTH);
final JPanel p2 = new JPanel();
p2.add(this.tf01);
p2.add(this.tf02);
f.getContentPane().add(p2, BorderLayout.CENTER);
f.setSize(Sample14.window_width, Sample14.window_height);
f.setVisible(true);
}
private class PushButtonActionListener implements ActionListener {
private static final String USER_DIR = "user.dir";
JFrame f = null;
public PushButtonActionListener(final JFrame af) {
this.f = af;
}
/*
* ボタンクリック時処理
*/
public void actionPerformed(final ActionEvent ae) {
/**
* 開くボタンの場合
*/
if (ae.getActionCommand() == Sample14.btnOpen_code) {
Sample14.this.tf01.setText("");
Sample14.this.tf02.setText("");
/**
* 対象ファイルを選択
*/
final JFileChooser fc = new JFileChooser(System
.getProperty(PushButtonActionListener.USER_DIR));
final int fd = fc.showOpenDialog(this.f);
try {
if (fd == JFileChooser.APPROVE_OPTION) {
final FileInputStream fi = new FileInputStream(fc
.getSelectedFile());
final BufferedReader br = new BufferedReader(
new InputStreamReader(fi));
final String s01 = br.readLine();
// 1レコード目に値がある場合
if (s01 != null) {
// 上テキストフィールドに1レコード目の値をセット
Sample14.this.tf01.setText(s01);
}
final String s02 = br.readLine();
// 2レコード目に値がある場合
if (s02 != null) {
// 下テキストフィールドに1レコード目の値をセット
Sample14.this.tf02.setText(s02);
}
br.close();
fi.close();
}
} catch (final Exception ex) {
}
/**
* 保存ボタンの場合
*/
} else if (ae.getActionCommand() == Sample14.btnSave_code) {
/**
* 対象ファイルを選択
*/
final JFileChooser fc = new JFileChooser(System
.getProperty(PushButtonActionListener.USER_DIR));
final int fd = fc.showSaveDialog(this.f);
try {
if (fd == JFileChooser.APPROVE_OPTION) {
final FileOutputStream fo = new FileOutputStream(fc
.getSelectedFile());
final PrintStream ps = new PrintStream(fo);
/**
* 1レコード目に上テキストフィールドの値を書き込む
*/
ps.println(Sample14.this.tf01.getText());
/**
* 2レコード目に上テキストフィールドの値を書き込む
*/
ps.println(Sample14.this.tf02.getText());
ps.close();
fo.close();
}
} catch (final Exception ex) {
}
}
}
}
}