2011年4月19日
<Java> JVA404-簡易記事本
這題重點:
1. TextArea的 剪下、複製、貼上功能
2. 檔案選擇器(JFileChooser)的讀檔、存檔方法
================================
//############################# JVA404.java ###############################
/*
建立一個簡單記事本,並且有「開新檔案」、「開啟舊檔」、「離開」等三項功能
自行建立「儲存檔案」、「複製」、「剪下」、「貼上」等功能
*/
import javax.swing.*;
import javax.swing.border.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
public class JVA404 extends JFrame {
Container c = null;
public JVA404(String title) { //定義JVA404類別的建構子
super(title);
c = this.getContentPane();
c.setLayout(new BorderLayout());
final JTextArea t = new JTextArea();
t.setLineWrap(true);
JScrollPane s = new JScrollPane(t);
c.add(s, BorderLayout.CENTER);
final JFileChooser fc = new JFileChooser();
JMenuBar mb;
JMenu fmi; //檔案
JMenuItem nmi; //開新檔案
JMenuItem omi; //開啟舊檔
JMenuItem smi; //儲存檔案
JMenuItem exmi; //離開
JMenu emi; //編輯
JMenuItem cmi; //複製
JMenuItem pmi; //貼上
JMenuItem cutmi; //剪下
mb = new JMenuBar();
mb.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED));
setJMenuBar(mb);
fmi = new JMenu("檔案");
//建立「開新檔案」功能,定義事件,並加入選單中
nmi = new JMenuItem("開新檔案");
nmi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
t.setText("");
}
});
fmi.add(nmi);
//建立「開啟舊檔」功能,定義事件,並加入選單中
omi = new JMenuItem("開啟舊檔");
omi.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
int yesornot = fc.showOpenDialog(JVA404.this);
if(yesornot == JFileChooser.APPROVE_OPTION){
try{
String line;
File f = fc.getSelectedFile();
BufferedReader br = new BufferedReader(new FileReader(f.getAbsolutePath()));
t.setText(br.readLine());
while( (line = br.readLine()) != null){
t.append("\n" + line);
}
br.close();
}catch(IOException ioe){
}
}
}
});
fmi.add(omi);
//建立「儲存檔案」功能,定義事件,並加入選單中
smi = new JMenuItem("儲存檔案");
//
//##########################################################
// 請在此處加入「儲存檔案」的處理程序
//##########################################################
//
smi.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
try{
int op;
op = fc.showSaveDialog(JVA404.this);
if(op == JFileChooser.APPROVE_OPTION){
File f = fc.getSelectedFile();
BufferedWriter bw = new BufferedWriter(new FileWriter(f.getAbsolutePath())));
String lines[] = t.getText().split("\n");
for(int i = 0 ; i<lines.length ; i++){
bw.write(lines[i]);
bw.newLine();
}
bw.close();
}
}catch(IOException ioe){
ioe.printStackTrace();
}
}
});
fmi.add(smi);
fmi.addSeparator();
//建立「離開」功能,定義事件,並加入選單中
exmi = new JMenuItem("離開");
exmi.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
System.exit(0);
}
});
fmi.add(exmi);
mb.add(fmi);
emi = new JMenu("編輯");
//建立「複製」功能,定義事件,並加入選單中
cmi = new JMenuItem("複製");
//
//##########################################################
// 請在此處加入「複製」的處理程序
//##########################################################
//
cmi.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
t.copy();
}
});
emi.add(cmi);
//建立「貼上」功能,定義事件,並加入選單中
pmi = new JMenuItem("貼上");
//
//##########################################################
// 請在此處加入「貼上」的處理程序
//##########################################################
//
pmi.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
t.paste();
}
});
emi.add(pmi);
//建立「剪下」功能,定義事件,並加入選單中
cutmi = new JMenuItem("剪下");
//
//##########################################################
// 請在此處加入「剪下」的處理程序
//##########################################################
//
cutmi.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
t.cut();
}
});
emi.add(cutmi);
mb.add(emi);
//定義框架(視窗)關閉時的處理
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
try {
UIManager.setLookAndFeel("com.sun.swing.plaf.gtk.GTKLookAndFeel");
SwingUtilities.updateComponentTreeUI(this);
} catch (Exception e) { }
this.setSize(400, 250);
this.setVisible(true);
}
public static void main(String s[]) {
//建立JVA404類別的實體
JVA404 App = new JVA404("簡易記事本");
}
}
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言