2007年11月8日木曜日

テキストの保存

ファイル選択ダイアログを表示し、ユーザにファイルを選択させる。
Windowsマシン向けに改行コードを\r\nへ変換している点に注意。
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class FileDialogTest extends JFrame implements ActionListener {
private JTextArea textarea = new JTextArea();
private JButton button = new JButton("名前を付けて保存(S)");
public static void main(String[] args) {
FileDialogTest frame = new FileDialogTest();
frame.setTitle("text editor sample");
frame.setSize(480, 320);
frame.setVisible(true);
}

public FileDialogTest() {
button.setMnemonic(KeyEvent.VK_S);
button.addActionListener(this);
this.setLayout(new BorderLayout());
this.add(button, BorderLayout.PAGE_END);
this.add(textarea, BorderLayout.CENTER);
}

public void actionPerformed(ActionEvent ae) {
if(ae.getSource().equals(button)) {
JFileChooser fileChooser = new JFileChooser();
if(fileChooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
try {
File file = fileChooser.getSelectedFile();
FileWriter fileWriter = new FileWriter(file);
fileWriter.write(textarea.getText().replaceAll("\n", "\r\n"));
fileWriter.close();
JOptionPane.showMessageDialog(this,
"テキストを" + file.getName() + "に保存しました。");
} catch(Exception e) {}
}
}
}
}

2007年11月3日土曜日

タイマーの表示

秒:ミリ秒を表示するタイマー。一時停止などはついていません。
import java.util.Date;
import javax.swing.*;

public class TimerSample extends JApplet implements Runnable {
private long startTime;
private JLabel lblTimer = new JLabel( "", JLabel.CENTER );

public void init() {
startTime = new Date().getTime();
this.add( lblTimer );
Thread t = new Thread( this );
t.start();
}
public void run() {
while( true ) {
try {
long now = new Date().getTime();
long passedTime = now - startTime;
int passedMilliSec = (int)( passedTime % 1000 ),
passedSec = (int)( passedTime / 1000 );
lblTimer.setText( new Integer( passedSec ).toString() + ":"
+ new Integer( passedMilliSec ).toString() );
Thread.sleep( 100 );
} catch(Exception e) {}
}
}
}