《Java编写的文本编辑器.docx》由会员分享,可在线阅读,更多相关《Java编写的文本编辑器.docx(18页珍藏版)》请在三一办公上搜索。
1、Java编写的文本编辑器界面: 代码: /简单的类似记事本的文档编辑器 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.se
2、tDefaultCloseOperation(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
3、,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 JMen
4、u(文件(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.a
5、dd(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 Show
6、Action(打开); 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,Inpu
7、tEvent.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;/分割线 a
8、g=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
9、 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,
10、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 ShowAc
11、tion(全选); 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.setS
12、elected(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=type
13、Menu.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(KeyEven
14、t.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=
15、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; text
16、Panel.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.se
17、tEditable(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=黑色,蓝色,绿色,红色
18、,黄色,蓝绿色,浅灰色; 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.setEditab
19、le(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.getDo
20、cument.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.showConfirmDial
21、og(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.wri
22、te(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.rea
23、d(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
24、) 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(保存文件失败); /退出
25、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=b
26、j) 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 = JOptionPan
27、e.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, 由于种种原因,该版本记事本还存在很多缺陷,我们将在以后的工
28、作中予以改进,说明, 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.getSelectionEnd); /全选 if (s=am) txtArea.selectAll; /撤销 if(s=ah) um.undo; /字体 if (s=zt) tishi.setFont(new Font(华文行楷,1,15)
29、; 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
30、(300,250); txtArea.getSelectionStart, 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 actionP
31、erformed(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
32、); 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
33、.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.
34、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); k
35、k=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=tx
36、tArea.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; public static final int WIDTH = 550; public static final int HEIGHT = 450; JTextArea txtArea; JMenu fileMenu,editMenu,typeMenu,viewMenu,helpMenu,aboutMenu; JMenuItem aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,zdhh