收藏 分销(赏)

Java编写的文本编辑器.docx

上传人:仙人****88 文档编号:12011138 上传时间:2025-08-27 格式:DOCX 页数:13 大小:52.71KB 下载积分:10 金币
下载 相关 举报
Java编写的文本编辑器.docx_第1页
第1页 / 共13页
Java编写的文本编辑器.docx_第2页
第2页 / 共13页


点击查看更多>>
资源描述
界面: 代码(编译后可直接运行): //简单的类似记事本的文档编辑器 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 byte[in.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(); txtArea.setFont(new Font(f.getName(),f.getStyle(),20)); kk="20"; } if(td=="25"){ Font f=txtArea.getFont(); txtArea.setFont(new Font(f.getName(),f.getStyle(),25)); kk="25"; } if(td=="30"){ Font f=txtArea.getFont(); txtArea.setFont(new Font(f.getName(),f.getStyle(),30)); kk="30"; } if(td=="35"){ Font f=txtArea.getFont(); txtArea.setFont(new Font(f.getName(),f.getStyle(),35)); kk="35"; } if(td=="40"){ Font f=txtArea.getFont(); txtArea.setFont(new Font(f.getName(),f.getStyle(),40)); kk="40"; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服