Java编写的文本编辑器.doc_第1页
Java编写的文本编辑器.doc_第2页
Java编写的文本编辑器.doc_第3页
Java编写的文本编辑器.doc_第4页
Java编写的文本编辑器.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

界面:代码(编译后可直接运行):/简单的类似记事本的文档编辑器import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;import java.io.*;import java.awt.font.*;import javax.swing.undo.UndoManager;public class MyTxt public static void main(String args) Aframe frame = new Aframe(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.show(); class Aframe extends JFrame public Aframe() setTitle(我的记事本); setSize(WIDTH, HEIGHT); Container contentPane = getContentPane(); JPanel txtPanel = new JPanel(); JPanel comboxPanel = new JPanel(); JPanel textPanel = new JPanel(); txtArea=new JTextArea(,17,40); JScrollPane scrollPane =new JScrollPane(txtArea); txtPanel.add(scrollPane); contentPane.add(comboxPanel,BorderLayout.NORTH); contentPane.add(txtPanel); contentPane.add(textPanel,BorderLayout.SOUTH); /Caidan lan:添加主菜单并设置快捷键 JMenuBar menuBar =new JMenuBar(); setJMenuBar(menuBar); fileMenu=new JMenu(文件(F); editMenu=new JMenu(编辑(E); typeMenu=new JMenu(格式(O); viewMenu=new JMenu(查看(V); helpMenu=new JMenu(帮助(H); aboutMenu=new JMenu(关于(A); fileMenu.setMnemonic(F); editMenu.setMnemonic(E); typeMenu.setMnemonic(O); viewMenu.setMnemonic(V); helpMenu.setMnemonic(H); aboutMenu.setMnemonic(A); menuBar.add(fileMenu); menuBar.add(editMenu); menuBar.add(typeMenu); menuBar.add(viewMenu); menuBar.add(aboutMenu); menuBar.add(helpMenu); /wenjian“文件”菜单的子菜单添加以及设置加速器,监听器 aa=fileMenu.add(new ShowAction(新建); aa.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK); ab=fileMenu.add(new ShowAction(打开); ab.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK); ac=fileMenu.add(new ShowAction(保存); ac.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK); ad=fileMenu.add(new ShowAction(另存为); ad.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK); fileMenu.addSeparator(); ae=fileMenu.add(new ShowAction(页面设置); ae.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_U,InputEvent.CTRL_MASK); af=fileMenu.add(new ShowAction(打印); af.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK); fileMenu.addSeparator();/分割线 ag=fileMenu.add(new ShowAction(退出); ag.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK); /bianji“编辑”菜单的子菜单添加以及设置加速器,监听器 ah=editMenu.add(new ShowAction(撤消); editMenu.addSeparator(); ah.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK); ai=editMenu.add(new ShowAction(剪切); ai.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK); aj=editMenu.add(new ShowAction(复制); aj.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK); an=editMenu.add(new ShowAction(粘贴); an.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK); ak=editMenu.add(new ShowAction(删除); ak.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_MASK); editMenu.addSeparator(); al=editMenu.add(new ShowAction(查找); al.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK); am=editMenu.add(new ShowAction(全选); am.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK); /geshi“格式”菜单的子菜单添加以及设置加速器,监听器 zdhh=new JMenu(自动换行(L); zdhh.setMnemonic(L); typeMenu.add(zdhh); ButtonGroup group =new ButtonGroup(); xz=new JRadioButtonMenuItem(选择); xz.addActionListener(new ShowAction(选择); xz.setSelected(true); qxxz=new JRadioButtonMenuItem(取消); qxxz.addActionListener(new ShowAction(取消); qxxz.setSelected(true); group.add(xz);group.add(qxxz); zdhh.add(xz);zdhh.add(qxxz); bj=typeMenu.add(new ShowAction(背景颜色); bj.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK); zt=typeMenu.add(new ShowAction(字体); zt.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK); /字体弹出框中的“确定”按钮 que=new Button(确定); que.addActionListener(new boxlistener(); /chakan“查看”菜单的子菜单添加以及设置加速器,监听器 ztl=viewMenu.add(new ShowAction(状态栏); ztl.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK); /guanyu“关于”菜单的子菜单添加以及设置加速器,监听器 zzxx=aboutMenu.add(new ShowAction(作者信息); zzxx.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK); bq=aboutMenu.add(new ShowAction(版权); bq.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B,InputEvent.CTRL_MASK); sm=aboutMenu.add(new ShowAction(声明); sm.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK); /bangzhu“帮助”菜单的子菜单添加以及设置加速器,监听器 shm=helpMenu.add(new ShowAction(说明); shm.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK); /文本框底部工具栏的设置 toolbar2=new JToolBar(); textPanel.add(toolbar2); text1=new JTextField(就绪,10); text2=new JTextField(欢迎使用该记事本!,10); text3=new JTextField(,10); text4=new JTextField(,10); textPanel.setLayout(new GridLayout(1, 4); toolbar2.add(text1); toolbar2.add(text2); toolbar2.add(text3); toolbar2.add(text4); text1.setEditable(false); text2.setEditable(false); text3.setEditable(false); text4.setEditable(false); /组合框的设置 /字体 zitiLabel=new JLabel(字体);comboxPanel.add(zitiLabel); String zit=宋体,华文行楷,楷体,黑体,幼圆; zitibox=new JComboBox(zit); comboxPanel.add(zitibox); /颜色 yanseLabel=new JLabel(颜色);comboxPanel.add(yanseLabel); String yans=黑色,蓝色,绿色,红色,黄色,蓝绿色,浅灰色; yansebox=new JComboBox(yans); comboxPanel.add(yansebox); /大小 daxiaoLabel=new JLabel(大小);comboxPanel.add(daxiaoLabel); String dax=15,10,5,20,25,30,35,40,.; daxiaobox=new JComboBox(dax); comboxPanel.add(daxiaobox); zitibox.setEditable(true); yansebox.setEditable(true); daxiaobox.setEditable(true); comboxPanel.setLayout(new FlowLayout(FlowLayout.LEFT);/靠左排列 /组合框注册监听器 yansebox.addActionListener(new boxlistener(); zitibox.addActionListener(new boxlistener(); daxiaobox.addActionListener(new boxlistener(); txtPanel.setLayout(new GridLayout(1, 1); /实例化“撤销” um= new UndoManager (); txtArea.getDocument().addUndoableEditListener(um); /菜单栏的接口实现 private class ShowAction extends AbstractAction public ShowAction(String name)super(name); public void actionPerformed(ActionEvent e) Object s=e.getSource(); /新建 if(s=aa) if(txtArea.getText().equals() txtArea.setText(); else int n=JOptionPane.showConfirmDialog(Aframe.this, 无标题记事本已改变。n想要保存吗?,记事本,JOptionPane.YES_NO_CANCEL_OPTION); if(n=JOptionPane.NO_OPTION) txtArea.setText(); setTitle(无标题+记事本); else if(n=JOptionPane.YES_OPTION) save.setVisible(true); String name=save.getDirectory()+save.getFile(); try FileOutputStream out=new FileOutputStream(name); out.write(txtArea.getText().getBytes(); out.close(); catch(IOException a) System.err.println(保存失败。!); /打开 if(s=ab) open.setVisible(true); String name=open.getDirectory()+open.getFile(); String name2=open.getFile(); setTitle(name2); try FileInputStream in=new FileInputStream(name); byte ia=new bytein.available(); in.read(ia); txtArea.setText(new String(ia); in.close(); catch(IOException a) System.err.println(获取文件失败!); /另存为 if(s=ad) save.setVisible(true); String name=save.getDirectory()+save.getFile(); try FileOutputStream out=new FileOutputStream(name); out.write(txtArea.getText().getBytes(); out.close(); catch(IOException a) System.err.println(保存失败。!); shifulingcun=1; /保存 if(s=ac) if(shifulingcun!=1) save.setVisible(true); String name=save.getDirectory()+save.getFile(); try FileOutputStream out=new FileOutputStream(name); out.write(txtArea.getText().getBytes(); out.close(); catch(IOException b) System.err.println(保存文件失败); /退出 if(s=ag) int selection = JOptionPane.showConfirmDialog( Aframe.this, 确定退出么?, 退出?, JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE); if (selection = JOptionPane.OK_OPTION) System.exit(0); /选择自动换行 if(s=xz) txtArea.setLineWrap(true); /取消自动换行 if(s=qxxz) txtArea.setLineWrap(false); /背景颜色 if(s=bj) Color color=JColorChooser.showDialog(Aframe.this, 调色板, txtArea.getBackground(); if(color!=null) txtArea.setBackground(color); /作者信息 if (s=zzxx) int selection = JOptionPane.showConfirmDialog( Aframe.this, “我的记事本”编写小组成员:刘悦,王征,沈光辉,作者信息, JOptionPane.DEFAULT_OPTION); /版权 if (s=bq) int selection = JOptionPane.showConfirmDialog( Aframe.this, 版权所有,盗版必究!,版权, JOptionPane.DEFAULT_OPTION); /声明 if (s=sm) int selection = JOptionPane.showConfirmDialog( Aframe.this, 该程序仅用于实践交流,声明, JOptionPane.DEFAULT_OPTION); /说明 if (s=shm) int selection = JOptionPane.showConfirmDialog( Aframe.this, 由于种种原因,该版本记事本还存在很多缺陷,我们将在以后的工作中予以改进,说明, JOptionPane.DEFAULT_OPTION); /剪切复制粘贴 if (s=ai| s=cutTtem) txtArea.cut(); if (s=aj) txtArea.copy(); if (s=an) txtArea.paste(); /删除 if(s=ak) txtArea.replaceRange(, txtArea.getSelectionStart(), txtArea.getSelectionEnd(); /全选 if (s=am) txtArea.selectAll(); /撤销 if(s=ah) um.undo(); /字体 if (s=zt) tishi.setFont(new Font(华文行楷,1,15); tanchu.setLocation(300,250); tanchu.setSize(200,150); tanchu.setTitle(字体设置); tanchu.setLayout(new GridLayout(2,2,2,2); tanchu.add(tishi); tanchu.add(daxiaobox); tanchu.add(que); tanchu.add(zitibox); tanchu.setVisible(true); /状态栏 aaaaa.setText(当前字体是+ff+颜色是+zzz+大小是+kk); if (s=ztl) tanchu.setLocation(300,250); tanchu.setSize(300,150); tanchu.setTitle(当前状态); tanchu.setLayout(new GridLayout(2,2,2,2); aaaaa.setEditable(false); tanchu.add(aaaaa); tanchu.add(que); tanchu.setVisible(true); /查找 /组合框的接口实现 private class boxlistener implements ActionListener public void actionPerformed(ActionEvent ee) Object ss=yansebox.getSelectedItem(); Object zz=zitibox.getSelectedItem(); Object dx=daxiaobox.getSelectedItem(); String tr=(String)ss; String tz=(String)zz; String td=(String)dx; /字体菜单中弹出菜单“确定”的响应 if (ee.getSource()=que) tanchu.dispose(); /颜色 if(tr=红色) txtArea.setForeground(Color.red); zzz=红色; if(tr=黑色) txtArea.setForeground(Color.black); zzz=黑色; if(tr=绿色) txtArea.setForeground(Color.green); zzz=绿色; if(tr=蓝色) txtArea.setForeground(Color.blue); zzz=蓝色; if(tr=黄色) txtArea.setForeground(Color.yellow); zzz=黄色; if(tr=蓝绿色) txtArea.setForeground(Color.cyan); zzz=蓝绿色; if(tr=浅灰色) txtArea.setForeground(Color.lightGray); zzz=浅灰色; /字体 if(tz=华文行楷) Font f=txtArea.getFont(); txtArea.setFont(new Font(华文行楷,f.getStyle(),f.getSize(); ff=华文行楷; if(tz=楷体) Font f=txtArea.getFont(); txtArea.setFont(new Font(楷体,f.getStyle(),f.getSize(); ff=楷体; if(tz=宋体) Font f=txtArea.getFont(); txtArea.setFont(new Font(宋体,f.getStyle(),f.getSize(); ff=宋体; if(tz=黑体) Font f=txtArea.getFont(); txtArea.setFont(new Font(黑体,f.getStyle(),f.getSize(); ff=黑体; if(tz=幼圆) Font f=txtArea.getFont(); txtArea.setFont(new Font(幼圆,f.getStyle(),f.getSize(); ff=幼圆; /大小 if(td=5) Font f=txtArea.getFont(); txtArea.setFont(new Font(f.getName(),f.getStyle(),5); kk=5; if(td=10) Font f=txtArea.getFont(); txtArea.setFont(new Font(f.getName(),f.getStyle(),10); kk=10; if(td=15) Font f=txtArea.getFont(); txtArea.setFont(new Font(f.getName(),f.getStyle(),15); kk=15; if(td=20) Font f=txtArea.getFont(); t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论