/*
?* 記事本程序
?* 編寫時間:2010.3.12
?*/
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import java.io.*;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.KeyStroke;
public class TextFrame extends JFrame{
??? private JFrame frame;
??? private JTextArea jta;
??? private JScrollPane jsp;
??? private JMenu wj;
??? private JMenu bj;
??? private JMenu gs;
??? private JMenu ck;
??? private JMenu bz;
??? private JMenuBar jmb;
??? private JMenuItem xj;
??? private JMenuItem dk;
??? private JMenuItem bc;
??? private JMenuItem lcw;
??? private JMenuItem ymsz;
??? private JMenuItem dy;
??? private JMenuItem tc;
??? private JMenuItem cx;
??? private JMenuItem jq;
??? private JMenuItem fz;
??? private JMenuItem zt;
??? private JMenuItem sc;
??? private JMenuItem cz;
??? private JMenuItem czxyg;
??? private JMenuItem th;
??? private JMenuItem zd;
??? private JMenuItem qx;
??? private JMenuItem sj;
??? private JMenuItem zdhh;
??? private JMenuItem zti;
??? private JMenuItem ztl;
??? private JMenuItem bzzt;
??? private JMenuItem gy;
??? private String lj = "";
?? public TextFrame(){
?? frame = new JFrame("Java記事本");
?? frame.setLocation(100, 100);
?? Container c = frame.getContentPane();
?? jta = new JTextArea(30,60);
?? jsp = new JScrollPane(jta);
?? wj = new JMenu("文件(F)");//工具欄
?? bj = new JMenu("編輯(E)");
?? gs = new JMenu("格式(O)");
?? ck = new JMenu("查看(V)");
?? bz = new JMenu("幫助(H)");
?? wj.setMnemonic('F');//為工具欄設(shè)置快捷鍵(Alt+'? ')
?? gs.setMnemonic('O');//為工具欄設(shè)置快捷鍵(Alt+'? ')
?? ck.setMnemonic('V');//為工具欄設(shè)置快捷鍵(Alt+'? ')
?? bj.setMnemonic('E');//為工具欄設(shè)置快捷鍵(Alt+'? ')
?? bz.setMnemonic('H');//為工具欄設(shè)置快捷鍵(Alt+'? ')
?? jmb = new JMenuBar();
?? xj = new JMenuItem("新建(N)");
?? dk = new JMenuItem("打開(O)…");
?? bc = new JMenuItem("保存(S)");
?? lcw = new JMenuItem("另存為(A)…");
?? ymsz = new JMenuItem("頁面設(shè)置(U)…");
?? dy = new JMenuItem("打印(P)…");
?? tc = new JMenuItem("退出(X)");
?? xj.setMnemonic('N');//設(shè)置快捷鍵(' ')
?? xj.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_N,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? dk.setMnemonic('O');//設(shè)置快捷鍵(' ')
?? dk.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_O,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? bc.setMnemonic('S');//設(shè)置快捷鍵(' ')
?? bc.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_S,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? lcw.setMnemonic('A');//設(shè)置快捷鍵(' ')
?? ymsz.setMnemonic('U');//設(shè)置快捷鍵(' ')
?? dy.setMnemonic('P');//設(shè)置快捷鍵(' ')
?? dy.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_P,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? tc.setMnemonic('X');//設(shè)置快捷鍵(' ')
?? wj.add(xj);
?? wj.add(dk);
?? wj.add(bc);
?? wj.add(lcw);
?? wj.add(ymsz);
?? wj.add(dy);
?? wj.add(tc);
?? cx = new JMenuItem("撤消(U)");
?? jq = new JMenuItem("剪切(T)");
?? fz = new JMenuItem("復(fù)制(C)");
?? zt = new JMenuItem("粘貼(P)");
?? sc = new JMenuItem("刪除(L)");
?? cz = new JMenuItem("查找(F)");
?? czxyg = new JMenuItem("查找下一個(N)");
?? th = new JMenuItem("替換(R)");
?? zd = new JMenuItem("轉(zhuǎn)到(G)");
?? qx = new JMenuItem("全選(A)");
?? sj = new JMenuItem("時間/日期(D)");
?? cx.setMnemonic('U');//設(shè)置快捷鍵(' ')
?? cx.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_Z,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? jq.setMnemonic('T');//設(shè)置快捷鍵(' ')
?? jq.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_X,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? fz.setMnemonic('C');//設(shè)置快捷鍵(' ')
?? fz.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_C,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? zt.setMnemonic('P');//設(shè)置快捷鍵(' ')
?? zt.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_V,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? sc.setMnemonic('L');//設(shè)置快捷鍵(' ')
?? sc.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_DELETE,0));//設(shè)置快捷鍵(DELETE)
?? cz.setMnemonic('F');//設(shè)置快捷鍵(' ')
?? cz.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_F,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? czxyg.setMnemonic('N');//設(shè)置快捷鍵(' ')
?? czxyg.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F3,0));//設(shè)置快捷鍵(F3)
?? th.setMnemonic('R');//設(shè)置快捷鍵(' ')
?? th.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_H,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? zd.setMnemonic('G');//設(shè)置快捷鍵(' ')
?? zd.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_G,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? qx.setMnemonic('A');//設(shè)置快捷鍵(' ')
?? qx.setAccelerator(
?????????? KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_A,InputEvent.CTRL_MASK));//設(shè)置快捷鍵(ctl+" ")
?? sj.setMnemonic('D');//設(shè)置快捷鍵(' ')
?? sj.setAccelerator(
??????? ???KeyStroke.getKeyStroke(
?????????? KeyEvent.VK_F5,0));//設(shè)置快捷鍵(F5)
?? bj.add(cx);
?? bj.add(jq);
?? bj.add(fz);
?? bj.add(zt);
?? bj.add(sc);
?? bj.add(cz);
?? bj.add(czxyg);
?? bj.add(th);
?? bj.add(zd);
?? bj.add(qx);
?? bj.add(sj);
?? zdhh = new JMenuItem("自動換行(W)");//設(shè)置快捷鍵(' ')
?? zti = new JMenuItem("字體(F)");//設(shè)置快捷鍵(' ')
?? zdhh.setMnemonic('W');//設(shè)置快捷鍵(' ')
?? zti.setMnemonic('F');//設(shè)置快捷鍵(' ')
?? gs.add(zdhh);
?? gs.add(zti);
?? ztl = new JMenuItem("狀態(tài)欄(S)");//設(shè)置快捷鍵(' ')
?? ztl.setMnemonic('S');//設(shè)置快捷鍵(' ')
?? ck.add(ztl);
?? bzzt = new JMenuItem("幫助主題(H)");
?? gy = new JMenuItem("關(guān)于記事本(A)");
?? bzzt.setMnemonic('H');//設(shè)置快捷鍵(' ')
?? gy.setMnemonic('A');//設(shè)置快捷鍵(' ')
?? bz.add(bzzt);
?? bz.add(gy);
?? jmb.add(wj);
?? jmb.add(bj);
?? jmb.add(gs);
?? jmb.add(ck);
?? jmb.add(bz);
?? c.add(jmb,BorderLayout.NORTH);
?? c.add(jsp,BorderLayout.CENTER);
?? frame.setVisible(true);//讓窗體可見
?? frame.setResizable(false);//禁止窗體放大
?? frame.pack();//根據(jù)窗口里面的布局及組件的preferedSize來確定frame的最佳大小
?? jta.requestFocusInWindow();//輸入文本域得到焦點
?? /*各菜單項的單擊事件*/
?? //新建
?? xj.addActionListener(new ActionListener(){
?????? public void actionPerformed(ActionEvent e){
?????????? lj = "";//先讓路徑為空
?????????? String nr = jta.getText();
?????????? if(!nr.equals("")){//文本域里文本不為空
?????????????? int result = JOptionPane.showConfirmDialog(
?????????????????????? frame, ("是否要保存蛤肌?"),("保存文件"),JOptionPane.YES_NO_CANCEL_OPTION);
?????????????? if(result == JOptionPane.NO_OPTION){//不保存
?????????????????? jta.setText("");
?????????????? }
?????????????? else if(result == JOptionPane.CANCEL_OPTION){//取消新建
?????????????? }
?????????????? else if(result == JOptionPane.YES_OPTION)//選擇保存
?????????????? {
?????????????????? JFileChooser jfc = new JFileChooser();//用于選擇保存路徑的文件名
?????????????????? int bcf = jfc.showSaveDialog(frame);
?????????????????? if(bcf == JFileChooser.APPROVE_OPTION){
??????????????????????????? try {
??????????????????????????????? //保存文件
??????????????????????????????? BufferedWriter bfw = new BufferedWriter(
??????????????????????????????????????? new FileWriter(new File(jfc.getSelectedFile().getAbsolutePath()+".txt")));
??????????????????????????????? lj = jfc.getSelectedFile().getAbsolutePath()+".txt";//獲取文件保存的路徑
????????????????????????????? ??bfw.write(nr);//向文件寫出數(shù)據(jù)
??????????????????????????????? bfw.flush();
??????????????????????????????? bfw.close();//關(guān)閉輸出流
??????????????????????????? } catch (IOException ex) {
??????????????????????????????? Logger.getLogger(TextFrame.class.getName()).log(Level.SEVERE, null, ex);
??????????????????????????? }
?????????????????????? new TextFrame();//新建文本文件
?????????????????? }
?????????????? }
?????????? }
?????? }
?? });
?? //打開
?? dk.addActionListener(new ActionListener(){
?? public void actionPerformed(ActionEvent e){
?????? JFileChooser jfc = new JFileChooser();//創(chuàng)建一個文件選擇類實例
?????? int dkf = jfc.showOpenDialog(frame);
?????? if(dkf == JFileChooser.APPROVE_OPTION){//單擊了打開文件窗體中的確定
?????????? try {
?????????????? FileInputStream input = new FileInputStream(new File(
?????????????????????? jfc.getSelectedFile().getAbsolutePath()));
?????????????? int sum = input.available();//得到輸入流文件的長度
?????????????? byte texts[] = new byte[sum];//用來保存讀取到的數(shù)據(jù)
?????????????? input.read(texts);//將文件讀取到texts字節(jié)數(shù)組中
//??????? ???????BASE64Encoder enc=new BASE64Encoder();
//?????????????? String str = enc.encode(texts);//字節(jié)數(shù)組轉(zhuǎn)換成String
?????????????? String str = new String(texts,"GB2312");//將字節(jié)數(shù)組轉(zhuǎn)換成中文字符
?????????????? jta.setText(str);
//??????????????????????? FileInputStream is = new FileInputStream(
//??????????????????????????????? jfc.getSelectedFile().getAbsolutePath());
//??????????????????????? InputStreamReader streamReader =
//??????????????????????????????? new InputStreamReader(is, "GB2312");
//??????????????????????? int in = 0;
//??????????????????????? char ch [] = new char[1024];
//??????????????????????? String text = "";
//??????????????????????? char s = ' ';
//??????????????????????? while((in = streamReader.read(ch))!=-1){
//??????? ????????????????????for(int i=0;i<ch.length;i++){
//??????????????????????????? s = ch[i];
//??????????????????????????? text += s;
//??????????????????????? }
//??????????????????????? jta.setText(text);
//??????????????????????? }
?????????????????????? ?//streamReader.close();
??????????????????? } catch (Exception ex) {
??????????????????????? Logger.getLogger(TextFrame.class.getName()).log(Level.SEVERE, null, ex);
??????????????????? }
?????? }
?????? else
?????????? lj = "";
?? }
?? });
?? //保存
?? bc.addActionListener(new ActionListener(){
?????? public void actionPerformed(ActionEvent e){
?????????? if(lj.equals("")){//沒有路徑時寝姿,就另存為
?????????????? JFileChooser jfc = new JFileChooser();//用于選擇保存路徑的文件名
?????????????????? int bcf = jfc.showSaveDialog(frame);//彈出保存窗口
?????????????????? if(bcf == JFileChooser.APPROVE_OPTION){
??????????????????????????? try {
??????????????????????????????? //保存文件
??????????????????????????????? BufferedWriter bfw = new BufferedWriter(
??????????????????????????????????????? new FileWriter(new File(jfc.getSelectedFile().getAbsolutePath()+".txt")));
??????????????????????????????? lj = jfc.getSelectedFile().getAbsolutePath();
??????????????????????????????? bfw.write(jta.getText());//向文件寫出數(shù)據(jù)
??????????????????????????????? bfw.flush();
??????????????????????????????? bfw.close();//關(guān)閉輸出流
??????????????????????????? } catch (IOException ex) {
??????????????????????????????? Logger.getLogger(TextFrame.class.getName()).log(Level.SEVERE, null, ex);
??????????????????????????? }
???? ??????????????}
?????????? }
?????????? else{//路徑不為空時奇颠,保存在原來的路徑下
?????????????? try {
?????????????????? //保存文件
?????????????????? BufferedWriter bfw = new BufferedWriter(
?????????????????????????? new FileWriter(
?????????????????????????? new File(lj)));
?????????????????? bfw.write(jta.getText());//向文件寫出數(shù)據(jù)
?????????????????? bfw.flush();
?????????????????? bfw.close();//關(guān)閉輸出流
?????????????? } catch (IOException ex) {
?????????????????? Logger.getLogger(TextFrame.class.getName()).log(Level.SEVERE, null, ex);
?????????????? }
?????????? }
?????? }
?? });
?? //另存為
?? lcw.addActionListener(new ActionListener(){
?????? public void actionPerformed(ActionEvent e){
?????????? JFileChooser jfc = new JFileChooser();//用于選擇保存路徑的文件名
?????????????????? int bcf = jfc.showSaveDialog(frame);//彈出保存窗口
?????????????????? if(bcf == JFileChooser.APPROVE_OPTION){
??????????????????????????? try {
??????????????????????????????? //保存文件
??????????????????????????????? BufferedWriter bfw = new BufferedWriter(
??????????????????? ????????????????????new FileWriter(new File(jfc.getSelectedFile().getAbsolutePath()+".txt")));
??????????????????????????????? lj = jfc.getSelectedFile().getAbsolutePath();
??????????????????????????????? bfw.write(jta.getText());//向文件寫出數(shù)據(jù)
??????????????? ????????????????bfw.flush();
??????????????????????????????? bfw.close();//關(guān)閉輸出流
??????????????????????????? } catch (IOException ex) {
??????????????????????????????? Logger.getLogger(TextFrame.class.getName()).log(Level.SEVERE, null, ex);
?????????????? ?????????????}
?????????????????? }
?????? }
?? });
?? //退出
?? tc.addActionListener(new ActionListener(){
?????? public void actionPerformed(ActionEvent e){
?????????? dispose();
?????????? System.exit(0);
?????? }
?? });
?? //打印
?? dy.addActionListener(new ActionListener(){
?????? public void actionPerformed(ActionEvent e){
?????? }
?? });
?? //頁面設(shè)置
?? ymsz.addActionListener(new ActionListener(){
?????? public void actionPerformed(ActionEvent e){
?????? }
?? });
?? //自動換行
?? zdhh.addActionListener(new ActionListener(){
?????? public void actionPerformed(ActionEvent e){
????????? jta.setLineWrap(true);
?????? }
?? });
?? //字體(點字體設(shè)置窗體的叉能關(guān)閉字體設(shè)置窗體卻不能再編輯)
?? zti.addActionListener(new ActionListener(){
?????? public void actionPerformed(ActionEvent e){
?????????? final JFrame ztsz = new JFrame("字體設(shè)置");
?????????? //字體
?????????? ztsz.setLocation(150, 200);
?????????? frame.setEnabled(false);//文本編輯窗體不可用掀序!
?????????? final JComboBox zt = new JComboBox(
?????????????????? GraphicsEnvironment.getLocalGraphicsEnvironment()
?????????????????? .getAvailableFontFamilyNames());
?????????? zt.setLocation(30, 80);
?????????? Container c = ztsz.getContentPane();
?????????? JPanel jp = new JPanel();
?????????? jp.add(zt,new FlowLayout());
???????? ??//字形
?????????? String[]?? faceString={"正常","粗體","斜體","粗斜體"};
?????????? String[]?? sizeString={"初號","小初","一號","小一","二號","小二",
????????????????? "三號","小三","四號","小四","五號","小五","六號","小六","七號",
????????????????? "八號","5","8","9","10","11","12","14","16","18","20","22","24",
????????????????? "26","28","36","48","72"};
?????????? final JComboBox zx = new JComboBox(faceString);
?????????? final JComboBox dx = new JComboBox(sizeString);
?????????? final JButton sure = new JButton("確定");
?????????? final JButton cancel = new JButton("取消");
?????????? jp.add(zx);
?????????? jp.add(dx);
?????????? jp.add(sure);
?????????? jp.add(cancel);
?????????? c.add(jp);
?????????? //確定
?????????? sure.addActionListener(new ActionListener(){
?????????????? public void actionPerformed(ActionEvent e){
?????????????????? if(e.getSource()==sure){//將文本設(shè)置成所選的字體
?????????????????????? if(!jta.getText().equals("")){
?????????????????????? jta.setFont(new Font(
?????????????????????????????? zt.getActionCommand(),zx.getSelectedIndex(),
?????????????????????????????? dx.getSelectedIndex()));
?????????????????????? frame.setEnabled(true);//文本編輯窗體可用
?????????????????????? }
?????????????????????? else{
?????????????????????????? JOptionPane.showMessageDialog(null,
??????????? ???????????????????????"你的文本中還沒有字符凑耻,請輸入字符后重新設(shè)置");
?????????????????????????? frame.setEnabled(true);
?????????????????????? }
?????????????????? }
?????????????? }
?????????? });
?????????? cancel.addActionListener(new ActionListener(){//取消
?????????????? public void actionPerformed(ActionEvent e){
?????????????????? if(e.getSource()==cancel){//關(guān)閉字體設(shè)置窗體
?????????????????????? ztsz.setVisible(false);
?????????????????????? frame.setEnabled(true);//文本編輯窗體可用
?????????????????? }
?????????????? }
?????????? });
?????????? ztsz.setSize(360, 100);//設(shè)置窗體長度100和寬度360
?????????? ztsz.setVisible(true);//窗體可見
?????????? ztsz.setResizable(false);//禁止放大窗體
?????? }
?? });
?? frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
?? }
?? public static void main(String args []){
?? new TextFrame();
?? }
}
(JAVA)記事本
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赂鲤,“玉大人噪径,你說我怎么就攤上這事∈酰” “怎么了找爱?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長泡孩。 經(jīng)常有香客問我车摄,道長,這世上最難降的妖魔是什么珍德? 我笑而不...
- 正文 為了忘掉前任练般,我火速辦了婚禮,結(jié)果婚禮上锈候,老公的妹妹穿的比我還像新娘薄料。我一直安慰自己,他們只是感情好泵琳,可當(dāng)我...
- 文/花漫 我一把揭開白布摄职。 她就那樣靜靜地躺著,像睡著了一般获列。 火紅的嫁衣襯著肌膚如雪谷市。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼鞠抑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忌警?” 一聲冷哼從身側(cè)響起搁拙,我...
- 正文 年R本政府宣布,位于F島的核電站数冬,受9級特大地震影響节槐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拐纱,卻給世界環(huán)境...
- 文/蒙蒙 一铜异、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧秸架,春花似錦揍庄、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缭黔,卻和暖如春食茎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背馏谨。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理岗喉,服務(wù)發(fā)現(xiàn),斷路器炸庞,智...
- ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程钱床,因...
- 生態(tài)型企業(yè)是單業(yè)務(wù)發(fā)展到一定程度后的必然選擇,如今蘋果埠居、Google查牌、阿里巴巴等公司正在向生態(tài)型公司轉(zhuǎn)型,他們力圖...