标签:style blog http color io os ar java for
1 /******************************************* 2 * 3 * 文本编辑器及网页源代码浏览器 4 * 5 * Author: Jintao 6 * E-mail:zjt1118@gmail.com 7 * Blog :www.zhaojintao.cn 8 * 9 ********************************************/ 10 import java.awt.BorderLayout; 11 import java.awt.Container; 12 import java.awt.FileDialog; 13 import java.awt.Frame; 14 import java.awt.Panel; 15 import java.awt.event.ActionEvent; 16 import java.awt.event.ActionListener; 17 import java.awt.event.InputEvent; 18 import java.awt.event.KeyEvent; 19 import java.io.BufferedReader; 20 import java.io.DataOutputStream; 21 import java.io.FileInputStream; 22 import java.io.FileOutputStream; 23 import java.io.IOException; 24 import java.io.InputStream; 25 import java.io.InputStreamReader; 26 import java.io.Reader; 27 import java.io.UnsupportedEncodingException; 28 import java.net.MalformedURLException; 29 import java.net.URL; 30 import java.nio.CharBuffer; 31 import java.sql.Savepoint; 32 33 import javax.swing.JButton; 34 import javax.swing.JFrame; 35 import javax.swing.JMenu; 36 import javax.swing.JMenuBar; 37 import javax.swing.JMenuItem; 38 import javax.swing.JPanel; 39 import javax.swing.JScrollPane; 40 import javax.swing.JTextArea; 41 import javax.swing.JTextField; 42 import javax.swing.KeyStroke; 43 44 45 public class Note extends JFrame{ 46 JMenuBar menub=new JMenuBar(); 47 JTextArea text=new JTextArea(); 48 JTextField urlText=new JTextField(); 49 JMenu files=new JMenu("文件"); 50 JMenu net=new JMenu("网络"); 51 //JMenu help=new JMenu("帮助"); 52 JMenuItem newfile=new JMenuItem("新建"); 53 JMenuItem open=new JMenuItem("打开"); 54 JMenuItem save=new JMenuItem("保存"); 55 JMenuItem saveas=new JMenuItem("另存为"); 56 JMenuItem about=new JMenuItem("关于记事本"); 57 JMenuItem url=new JMenuItem("转到"); 58 String name; 59 JFrame th=this; 60 String openedPath=null; 61 boolean opened=false; 62 boolean reworked=false; 63 64 //初始化窗体 65 Note(String name){ 66 super(name); 67 this.name=name; 68 setSize(600, 400); 69 } 70 //初始化 71 void init() 72 { 73 newfile.setMnemonic(‘N‘); 74 open.setMnemonic(‘O‘); 75 save.setMnemonic(‘S‘); 76 saveas.setMnemonic(‘A‘); 77 url.setMnemonic(‘\r‘); 78 //添加助记符 79 80 newfile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK)); 81 open.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK)); 82 save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK)); 83 saveas.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK)); 84 url.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,InputEvent.CTRL_MASK)); 85 //为控件添加快捷键 86 87 88 files.add(newfile); 89 files.add(open); 90 files.add(save); 91 files.add(saveas); 92 //help.add(about); 93 net.add(url); 94 menub.add(files); 95 menub.add(net); 96 setJMenuBar(menub); 97 98 Container p=getContentPane(); 99 p.setLayout(new BorderLayout()); 100 p.add(urlText,BorderLayout.NORTH); 101 p.add(new JScrollPane(text),BorderLayout.CENTER); 102 103 Listen listen=new Listen(); 104 newfile.addActionListener(listen); 105 open.addActionListener(listen); 106 save.addActionListener(listen); 107 saveas.addActionListener(listen); 108 url.addActionListener(listen); 109 urlText.addActionListener(listen); 110 111 } 112 class Listen implements ActionListener 113 { 114 115 public void actionPerformed(ActionEvent e){ 116 // TODO Auto-generated method stub 117 Object source=e.getSource(); 118 if (source==newfile) { 119 text.setText(""); 120 th.setTitle(name); 121 openedPath=null; 122 opened=false; 123 }else if (source==url||source==urlText){ 124 System.out.println("url"); 125 String ut= "http://"+urlText.getText(); 126 try { 127 URL url=new URL(ut); 128 InputStream is= url.openStream(); 129 InputStreamReader isr = new InputStreamReader(is,"utf-8"); 130 BufferedReader br=new BufferedReader(isr); 131 String data=br.readLine(); 132 text.setText(""); 133 while(data!=null) 134 { 135 String t=text.getText(); 136 t+="\r\n"; 137 text.setText(t+data); 138 data=br.readLine(); 139 } 140 text.setCaretPosition(0); 141 //System.out.println(content); 142 } catch (MalformedURLException e1) { 143 // TODO Auto-generated catch block 144 e1.printStackTrace(); 145 } catch (IOException e1) { 146 // TODO Auto-generated catch block 147 e1.printStackTrace(); 148 } 149 }else if (source==open) { 150 FileDialog openFile=new FileDialog(th, "打开文件..", FileDialog.LOAD); 151 openFile.setVisible(true); 152 String filePath=openFile.getDirectory()+openFile.getFile(); 153 try { 154 InputStreamReader inr =new InputStreamReader(new FileInputStream(filePath),"utf-8"); 155 FileInputStream fis=new FileInputStream(filePath); 156 char[] content=new char[fis.available()]; 157 inr.read(content); 158 //fis.read(content); 159 text.setText(new String(content)); 160 text.setCaretPosition(0); 161 if(openFile.getTitle()!=null) 162 { 163 th.setTitle(openFile.getFile()+name); 164 openedPath=filePath; 165 opened=true; 166 } 167 fis.close(); 168 inr.close(); 169 } catch (Exception e2) { 170 // TODO: handle exception 171 e2.printStackTrace(); 172 } 173 174 175 }else if (source==save || source==saveas) 176 { 177 String savePath=openedPath; 178 if (savePath==null||source==saveas) { 179 FileDialog saveFile=new FileDialog(th,"保存文件...",FileDialog.SAVE); 180 saveFile.setVisible(true); 181 savePath=saveFile.getDirectory()+saveFile.getFile(); 182 System.out.println(saveFile.getTitle()); 183 } 184 try { 185 DataOutputStream dos = new DataOutputStream(new FileOutputStream(savePath)); 186 //FileOutputStream fos=new FileOutputStream(savePath); 187 //fos.write(text.getText().getBytes()); 188 //fos.close(); 189 dos.write(text.getText().getBytes("utf-8")); 190 dos.close(); 191 } catch (Exception e2) { 192 // TODO: handle exception 193 e2.printStackTrace(); 194 } 195 if(source==save) 196 { 197 openedPath=savePath; 198 } 199 } 200 201 } 202 203 } 204 /** 205 * @param args 206 */ 207 public static void main(String[] args) { 208 // TODO Auto-generated method stub 209 String name="--涛哥牌记事本--V0.01--"; 210 Note note=new Note(name); 211 note.init(); 212 note.setVisible(true); 213 } 214 215 }
标签:style blog http color io os ar java for
原文地址:http://www.cnblogs.com/zjtlife/p/4020474.html