java编辑器

  1 package editor;
  2
  3 import java.io.*;
  4 import java.awt.*;
  5 import java.awt.datatransfer.Clipboard;
  6 import java.awt.datatransfer.DataFlavor;
  7 import java.awt.datatransfer.StringSelection;
  8 import java.awt.datatransfer.Transferable;
  9 import java.awt.event.*;
 10
 11 import javax.swing.JOptionPane;
 12
 13
 14 public class TextMenu {
 15
 16     public static void main(String[] args) {
 17         new MyMenuFrame(); //创建窗口对象
 18     }
 19 }
 20
 21 class MyMenuFrame extends Frame{
 22     TextArea text;//定义文本域
 23     FileDialog fileDlg;
 24     String str,fileName;
 25     private Clipboard cb;//系统粘贴板
 26     String board = null;//复制面板
 27     byte byteBuf[] = new byte[10000];
 28
 29     MenuBar m_MenuBar;//定义菜单条
 30     Menu menuFile,menuEdit,sub_Edit_Font,patternEdit,menuHelp,menuSize;//定义菜单项
 31     MenuItem mi_File_New,mi_File_Open,mi_File_Save,mi_File_Close,mi_File_Exit;//定义File中的菜单子项
 32     MenuItem mi_Edit_Cut,mi_Edit_Copy,mi_Edit_Paste;//定义Edit中的菜单子项
 33     MenuItem pattern_Red,pattern_Blue;//定义格式中的菜单子项
 34     MenuItem size_18,size_19,size_20,size_21,size_22;//定义字号中的菜单子项
 35     MenuItem mi_Help,mi_About;//定义Help中的菜单子项
 36
 37     CheckboxMenuItem mi_Font_Style,mi_Font_Size;//定义选择式的菜单子项
 38
 39     PopupMenu popM;//定义弹出式菜单
 40     MenuItem pi_Left,pi_Center,pi_Right;//定义弹出菜单中的菜单子项
 41
 42     Color oldColor;
 43     int text_Font_Style,new_Style,text_Font_Size,new_Size;
 44     String name;
 45     public MyMenuFrame() {
 46         // TODO 自动生成的构造函数存根======构造函数
 47         super("简易文本编辑器");
 48         fileDlg = new FileDialog(this, fileName);
 49         text = new TextArea(5,30);
 50         text.addMouseListener(new HandleMouse());//响应文本域的鼠标事件===调用内部类
 51         add(text,BorderLayout.CENTER);//将文本域加到窗体的中央位置=====边界布局
 52
 53         m_MenuBar = new MenuBar();//创建菜单条
 54
 55         menuFile = new Menu("文件");
 56         mi_File_New = new MenuItem("新建");
 57         mi_File_New.setShortcut(new MenuShortcut(KeyEvent.VK_N));//指定快捷键
 58         mi_File_Open = new MenuItem("打开");
 59         mi_File_Open.setShortcut(new MenuShortcut(KeyEvent.VK_O));//指定快捷键
 60         mi_File_Save = new MenuItem("保存");
 61         mi_File_Save.setShortcut(new MenuShortcut(KeyEvent.VK_S));//指定快捷键
 62         mi_File_Close = new MenuItem("关闭");
 63         mi_File_Exit = new MenuItem("退出");
 64         //接下来是使菜单项响应动作事件
 65         mi_File_New.addActionListener(new HandleAct());
 66         mi_File_Open.addActionListener(new HandleAct());
 67         mi_File_Save.addActionListener(new HandleAct());
 68         mi_File_Close.addActionListener(new HandleAct());
 69         mi_File_Exit.addActionListener(new HandleAct());
 70         //把菜单子项加入到菜单项
 71         menuFile.add(mi_File_New);
 72         menuFile.add(mi_File_Open);
 73         menuFile.add(mi_File_Save);
 74         menuFile.add(mi_File_Close);
 75         menuFile.addSeparator();//加一条横向分割线
 76         menuFile.add(mi_File_Exit);
 77
 78
 79         menuEdit = new Menu("编辑");
 80         mi_Edit_Copy = new MenuItem("复制");
 81         mi_Edit_Copy.setShortcut(new MenuShortcut(KeyEvent.VK_C));
 82         mi_Edit_Cut = new MenuItem("剪切");
 83         mi_Edit_Cut.setShortcut(new MenuShortcut(KeyEvent.VK_X));
 84         mi_Edit_Paste = new MenuItem("粘贴");
 85         mi_Edit_Paste.setShortcut(new MenuShortcut(KeyEvent.VK_V));
 86         sub_Edit_Font = new Menu("字体");
 87         mi_Font_Style = new CheckboxMenuItem("粗体");
 88         mi_Font_Size = new CheckboxMenuItem("加大");
 89         //接下来是使菜单项响应动作事件
 90         mi_Edit_Copy.addActionListener(new HandleAct());
 91         mi_Edit_Cut.addActionListener(new HandleAct());
 92         mi_Edit_Paste.addActionListener(new HandleAct());
 93         //选择式菜单命令监听者
 94         mi_Font_Style.addItemListener(new HandleItemB());
 95         mi_Font_Size.addItemListener(new HandleItemSize());
 96         //把菜单子项加入到菜单项
 97         sub_Edit_Font.add(mi_Font_Style);
 98         sub_Edit_Font.add(mi_Font_Size);
 99         menuEdit.add(mi_Edit_Copy);
100         menuEdit.add(mi_Edit_Cut);
101         menuEdit.add(mi_Edit_Paste);
102         menuEdit.addSeparator();//加一条横向分割线
103         menuEdit.add(sub_Edit_Font);
104
105
106         patternEdit =new Menu("格式");
107         pattern_Blue = new MenuItem("蓝色");
108         pattern_Red = new MenuItem("红色");
109         //添加注册事件
110         pattern_Blue.addActionListener(new HandleAct());
111         pattern_Red.addActionListener(new HandleAct());
112         //添加到容器中
113         patternEdit.add(pattern_Blue);
114         patternEdit.add(pattern_Red);
115
116         menuSize = new Menu("字号");
117         size_18 = new MenuItem("18");
118         size_19 = new MenuItem("19");
119         size_20 = new MenuItem("20");
120         size_21 = new MenuItem("21");
121         size_22 = new MenuItem("22");
122         //添加注册事件
123         size_18.addActionListener(new HandleAct());
124         size_19.addActionListener(new HandleAct());
125         size_20.addActionListener(new HandleAct());
126         size_21.addActionListener(new HandleAct());
127         size_22.addActionListener(new HandleAct());
128         //添加到相应的容器
129         menuSize.add(size_18);
130         menuSize.add(size_19);
131         menuSize.add(size_20);
132         menuSize.add(size_21);
133         menuSize.add(size_22);
134
135
136         menuHelp = new Menu("帮助");
137         mi_Help = new MenuItem("帮助");
138         mi_About = new MenuItem("关于");
139         //添加注册事件
140         mi_Help.addActionListener(new HandleAct());
141         mi_About.addActionListener(new HandleAct());
142         //添加到相应的容器
143         menuHelp.add(mi_Help);
144         menuHelp.add(mi_About);
145
146         //添加到菜单栏中
147         m_MenuBar.add(menuFile);//把“文件”加载到菜单条中
148         m_MenuBar.add(menuEdit);//把“编辑”加载到菜单条中
149         m_MenuBar.add(patternEdit);//把“格式”加载到菜单条中
150         m_MenuBar.add(menuSize);
151         m_MenuBar.add(menuHelp);//把“帮助”加载到菜单条中
152
153         this.setMenuBar(m_MenuBar);//把菜单条加载到整个Frame容器中
154
155         //创建弹出式菜单
156         popM = new PopupMenu();
157         //给弹出菜单创建菜单项
158         pi_Left = new MenuItem("左对齐");
159         pi_Right = new MenuItem("右对齐");
160         pi_Center= new MenuItem("居中对齐");
161         //给菜单项添加事件监听
162         pi_Left.addActionListener(new HandleAct());
163         pi_Right.addActionListener(new HandleAct());
164         pi_Center.addActionListener(new HandleAct());
165         //为弹出菜单添加菜单项
166         popM.add(pi_Left);
167         popM.add(pi_Right);
168         popM.add(pi_Center);
169         //将弹出菜单加在文本域上
170         text.add(popM);
171
172         addWindowListener(new HandleClose());//将Frame 注册给窗口事件的监听者
173         setSize(600,400);
174         setVisible(true);
175         name = (text.getFont()).getName();//获取文本域字体
176
177         text_Font_Style = (text.getFont()).getStyle();//获取文本域样式
178         new_Style = text_Font_Style;
179         text_Font_Size = (text.getFont()).getSize();
180         new_Size = text_Font_Size;
181     }//构造函数定义结束
182
183     //事件处理开始
184     class HandleMouse extends MouseAdapter{//内部类(处理文本域中的鼠标事件)
185         @Override
186         public void mouseReleased(MouseEvent e) {//鼠标按键松开事件弹出菜单
187             // TODO 自动生成的方法存根
188             if (e.isPopupTrigger()) {//检测鼠标事件是否由弹出菜单引发
189                 popM.show((Component)e.getSource(),e.getX(),e.getY());
190             }//将弹出菜单显示在用户鼠标点击的地方
191             super.mouseReleased(e);
192         }
193     }
194     class HandleAct implements ActionListener{//内部类。处理菜单命令
195
196         public void actionPerformed(ActionEvent e) {
197             // TODO 自动生成的方法存根
198             Font oldF = text.getFont();//获取当前就字体
199             String name = oldF.getName();//保存当前旧字体的字体类型
200             int size = oldF.getSize();//保存当前字体的大小
201             switch (e.getActionCommand()) {
202             // File菜单的事件响应
203                 case "新建" :
204                     newFile();
205                     break;
206                 case "打开" :
207                     openFile();
208                     break;
209                 case "保存" :
210                     saveFile();
211                     break;
212                 case "关闭" :
213                     closeFile();
214                     break;
215                 case "退出" :
216                     exit();
217                     break;
218                 // Edit菜单事件响应
219                 case "剪切" :
220                     cutText();
221                     break;
222                 case "复制" :
223                     copyText();
224                     break;
225                 case "粘贴" :
226                     pasteText();
227                     break;
228                 //格式菜单响应事件
229                  case "蓝色" :
230                      turnBlue();
231                      break;
232                  case "红色" :
233                      turnRed();
234                      break;
235                      //字号菜单响应事件
236                  case "18" :
237                      //Font对象有三个参数:字体,字型,字号
238                      text.setFont(new Font(name,oldF.getStyle(),18));
239                      break;
240                  case "19" :
241                      text.setFont(new Font(name,oldF.getStyle(),19));
242                      break;
243                  case "20" :
244                      text.setFont(new Font(name,oldF.getStyle(),20));
245                      break;
246                  case "21" :
247                      text.setFont(new Font(name,oldF.getStyle(),21));
248                      break;
249                  case "22" :
250                      text.setFont(new Font(name,oldF.getStyle(),22));
251                      break;
252                 // Help菜单事件响应
253                 case "帮助" :
254                     help();
255                     break;
256                 case "关于" :
257                     about();
258                     break;
259                 default :
260                     break;
261               }
262
263         }
264         public void newFile() {
265             JOptionPane.showMessageDialog(null, "内容已被更改,是否保存");
266             saveFile();
267         }
268         public void openFile() {
269             fileDlg.show();
270             /*fileDlg = new FileDialog(this,"打开文件",FileDialog.LOAD);
271             fileDlg.setDirectory("");
272             fileDlg.setVisible(true);*/
273             fileName = fileDlg.getFile();
274             /*try {
275                 File myfile = new File(fileDlg.getDirectory(),fileDlg.getTitle());
276                 RandomAccessFile raf = new RandomAccessFile(myfile, "r");
277                 while (raf.getFilePointer()<raf.length()) {
278                     text.append(raf.readLine()+"\n");//读文件并加载到text中
279                 }
280             } catch (IOException e) {
281                 // TODO: handle exception
282                 System.err.println(e.toString());
283             }*/
284
285             try {
286                 FileInputStream in = new FileInputStream(fileName);
287                 in.read(byteBuf);
288                 in.close();
289                 str = new String(byteBuf);
290                 text.setText(str);
291                 setTitle("TextEditor-" + fileName);
292             } catch (IOException ioe) {
293             }
294         }
295         public void saveFile() {
296             fileDlg.show();
297             fileName = fileDlg.getFile();
298             str = text.getText();
299             byteBuf = str.getBytes();
300             try {
301                 FileOutputStream out = new FileOutputStream(fileName);
302                 out.write(byteBuf);
303                 out.close();
304             } catch (IOException ioe) {
305
306             }
307         }
308         public void closeFile(){
309             text.setText(null);
310         }
311         public void exit() {
312             dispose();
313             System.exit(0);
314         }
315         public void copyText(){//复制
316             board = text.getSelectedText();
317             cb.setContents(new StringSelection(board), null);
318         }
319         public void cutText() {//剪切
320             board = text.getSelectedText();
321             cb.setContents(new StringSelection(board), null);
322             text.replaceRange("", text.getSelectionStart(),
323                     text.getSelectionEnd());
324         }
325         public void pasteText() {//粘贴
326             try {
327                 Transferable content = cb.getContents(null);
328                 String st = (String) content
329                         .getTransferData(DataFlavor.stringFlavor);
330                 text.replaceRange(st, text.getSelectionStart(),
331                         text.getSelectionEnd());
332             } catch (Exception ex) {
333             }
334         }
335         public void turnBlue() {
336
337         }
338         public void turnRed() {
339
340         }
341         public void help() {
342
343         }
344         public void about() {
345
346         }
347     }
348
349     class HandleItemB implements ItemListener{//内部类 (处理"粗体")
350         @Override
351         public void itemStateChanged(ItemEvent e) {//响应选择型菜单项
352             // TODO 自动生成的方法存根
353             Font oldF = text.getFont();//获取当前就字体
354             String name = oldF.getName();//保存当前旧字体的字体类型
355             int size = oldF.getSize();//保存当前字体的大小
356             if (((CheckboxMenuItem)e.getSource()).getState()){//查看是否选中
357                  text.setFont(new Font(name,Font.BOLD,size));
358             } else {//未选中
359                 new_Style = text_Font_Style;
360                 text.setFont(new Font(name,new_Style,new_Size));
361             }
362         }
363     }
364
365     class HandleItemSize implements ItemListener{//内部类  处理大字体
366         @Override
367         public void itemStateChanged(ItemEvent e) {//响应选择型菜单项
368             // TODO 自动生成的方法存根
369             Font oldF = text.getFont();//获取当前就字体
370             String name = oldF.getName();//保存当前旧字体的字体类型
371             int size = oldF.getSize();//保存当前字体的大小
372             if (((CheckboxMenuItem)e.getSource()).getState()){//查看是否选中
373                 new_Size = text_Font_Size*2;
374                 text.setFont(new Font(name,new_Style,new_Size));
375             } else {
376                 new_Size = text_Font_Size;
377                 text.setFont(new Font(name,new_Style,new_Size));
378             }
379         }
380     }
381
382     class HandleClose extends WindowAdapter{//内部类 (处理窗口事件)
383         @Override
384         public void windowClosing(WindowEvent e) {
385             // TODO 自动生成的方法存根
386             dispose();
387             System.exit(0);//退出程序
388             super.windowClosing(e);
389         }
390     }
391 }
时间: 2024-08-08 17:45:37

java编辑器的相关文章

6.Java编辑器介绍

Java编辑器很多,有免费的,有收费的,有英文的,中文的,多国语言的,没有哪款比哪款好,只有哪款更适合你,不必为了标新立异而使用别人都不使用的编辑器,建议大家走大众化路线. 目前市面上流行的Java编辑器有Eclipse.MyEclipse.Jcreator.NetBeans等,以下是对几款编辑器的介绍: Eclipse:开源免费,使用人数最多,提供了丰富的插件和友好的编辑界面,能耗也比较低,速度比较快,为Java而生.大公司一般用eclipse. MyEclipse:只是在Eclipse基础上

巧用Eclipse Java编辑器调试

在使用Eclipse开发Java Web应用时,使用的编辑器不但能够为开发者提供代码编写.辅助提示和实时编译等常用功能,而且还能够对Java源代码进行快捷修改.重构和语法纠错等高级操作.通过Eclipse Java编辑器,我们可以很方便的找到一些语法错误,并根据提示进行快速修正,也方便.下面对Eclipse Java编辑器提供的调试功能进行介绍. 1.错误提示符 位于出现错误的代码行的最左侧,用于指出错误所在的位置,将鼠标移动到该标记上,将显示具体的错误信息,如图1.7所示为变量未定义时显示的具

Java编写的Java编辑器_JavaIDE

一.JavaIDE效果图 原理:调用系统cmd的javac和java命令 二.java源码 import java.awt.CardLayout; import java.awt.Color; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt

Java编辑器——IEDA 2017激活

1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://idea.imsxm.com/ http://idea.iteblog.com/key.php 以上方法验证均可以

Source Insight(C/C++/Java编辑器)用法

操作技巧 1.同步 在编辑区域中,键盘按下Ctrl,用鼠标单击变量或方法时,会跳到变量或方法的定义. 如果某个变量或者方法是黑色字体表示的,说明它还没有被定义. 当然有时候也不是因为没定义,需要同步一下,Project->Synchronizing Files. 2.查看定义 可以选中一个变量,然后右键,Jump to Definition,跳转到定义. 当然,上面提过,也可以直接Ctrl+鼠标点击. 在编辑区域内选中变量或者方法,过一两秒,Context Window会自动显示定义. 3.查找

java中的快捷键

一.多行注释快捷键1.选中你要加注释的区域,用ctrl+shift+C或者ctrl+/会加上//注释2.先把你要注释的东西选中,用shit+ctrl+/ 会加上/*    */注释3.以上快捷在重复按一下就会去掉加上的注释4.要修改在eclispe中的命令的快捷键方式我们只需进入windows -> preference -> General -> key设置就行了二.Eclipse中添加文档注释快捷键1.例如默认的文档注释:       /**         * @author  X

Java开发中的eclispe常用快捷键&amp;全部快捷键

Ctrl+1 快速修复(经典快捷键)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了)Alt+Enter 显示当前选择资源(工程,or 文件 or文件)的属性Shift+Enter 在当前行的下一行插入空行(这时鼠标

java学习第10天

今天,下载了eclipse,终于不用在notepad里面敲了..好高兴=-=.下载安装eclipse就不用说了,去oracle官网下就好了,提醒一下,在所有路径中都不要有中文的出现..很能会有很多奇怪的错误,然后和很多编译器一样,建立工程 package ,然后建立java类,注意,尽量别在项目下直接建类,养成好习惯,找了下所有的命令,仅供参考. Eclipse快捷键大全(转载) Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到

创建并运行一个简单的Java程序

通常开发一个java应用程序可分为三个步骤: 1.创建一个带有文件扩展名 *.java 的源文件 1).使用编辑器(如记事本,小编使用的是notepad++),输入以下6行文本: 1 //一个简单的application例子:打印一行文本 2 class Hello { 3 public static void main (String args[]){ 4 System.out.println("Hello Java,This is my first Java Application!&quo