zoukankan      html  css  js  c++  java
  • 第十四周课程总结&实验报告(简单记事本的实现)

    1、JDBC概述

    JDBC提供了一种与平台无关的用于执行SQL语句的标准JavaAPI,可以方便的实现多种关系型数据库的统一操作,它由一组用Java语言编写的类和接口组成

    主要常用操作类与接口:

    java.sql.DriverManager 用于管理jdbc驱动程序

    Java.sql.Connection 用于建立与特定数据库的连接

    Java.sql.Statement 一个Statement的对象用于执行静态sql语句,并获得语句执行后产生的后果

    Java.sql.PreparedStatement 创建一个可以编译的sql语句对象,该对象可以多次被运行,以提高执行效率,是Statement的子接口

    Java.sql.ResultSet 用于创建表示sql语句检索结果的结果集,用户通过结果集完成对数据库的访问

    2、JDBC操作步骤

    (1)加载驱动

    public class Text {
            public static final String DBDRIVER="ora.gjt.mm.mysql.Driver";
        public static void main(String[] args) {
            try {
                Class.forName(DBDRIVER);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
        }
    
    }
    

    (2)连接数据库:使用DriverManager类连接数据库和Connection接口

    jdbc:mysql://IP地址:端口号/数据库名称
    

    (3)通过Statement发送sql语句

    通过Prepared Statement发送sql语句

    (4)关闭数据库

    3、MySQL数据库操作

    数据库连接

    mysql -u用户名 -p密码

    数据库创建

    创建数据库 CREATE DATABASE 数据库名称;

    数据库删除 DROP DATABASE 数据库名称;

    使用数据库

    USE 数据库名称;

    创建数据库表

    CREATE TABLE{
    字段名称1   字段类型 [DEFAULT 默认值][约束]
    字段名称2   字段类型 [DEFAULT 默认值][约束],
    ...,
    字段名称n   字段类型 [DEFAULT 默认值][约束],
    

    删除数据库表 DELETE FROM 表名称

    更新 UPDATE 表名称

    查询 SELECT{*lcolumn alias} FROM 表名称

    记事本

    package lastwork;
    import java.awt.*;
    import java.awt.datatransfer.Clipboard;
    import java.awt.datatransfer.Transferable;
    
    import javax.swing.event.UndoableEditListener;
    import javax.swing.text.View;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.awt.event.WindowAdapter;
    import java.awt.event.WindowEvent;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.swing.*;
    import javax.swing.event.DocumentEvent;
    import javax.swing.event.DocumentListener;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    import javax.swing.event.UndoableEditEvent;
    import javax.swing.event.UndoableEditListener;
    import javax.swing.undo.CannotUndoException;
    import javax.swing.undo.UndoManager;
    
    import org.w3c.dom.Text;
    
    
    import jdk.jshell.execution.Util;
    
    
    public class TextPad extends dialog implements ActionListener, DocumentListener{
    
    	JFrame frame;
    	JMenu fileMenu,editManu,formatMenu,checkMenu,helpMenu;
    	JMenuBar bar;
    	ImageIcon openicon,newicon,saveicon,saveanothericon,closeicon,linewrapicon;
    	JMenuItem openitem,newitem,saveitem,saveanotheritem,closeitem,pageitem,pointitem;
    	JMenuItem repealitem,cutitem,copyitem,stickitem,deleteitem,allitem,timedateitem,finditem,findnextitem,replaceitem,turnitem;
    	JMenuItem prepealitem,pcutitem,pcopyitem,pstickitem,pdeleteitem,pallitem,ptimedateitem;
    	JMenuItem linewrapitem,fontitem;
    	JMenuItem checkhelpitem,aboutitem;
    	JMenuItem stateitem;
    	JTextArea area;
    	JScrollPane scpane;
    	JFileChooser chooser;
    	File file;
    	JButton bt;
    	JPopupMenu pMenu;
    	boolean i=false;
    	boolean isNewFile=true;
    	File currentFile;
    	String oldValue;
    	JLabel statusLabel;
    	//系统剪贴板
    	Toolkit toolkit=Toolkit.getDefaultToolkit();
    	Clipboard clipBoard=toolkit.getSystemClipboard();
    	//创建撤销操作管理器(与撤销操作有关)
    	protected UndoManager undo=new UndoManager();
    	protected UndoableEditListener undoHandler=new UndoHandler();
    	 
    	public TextPad(){
    		frame=new JFrame("记事本");
    		bar=new JMenuBar();
    		fileMenu=new JMenu("文件(F)");
    		editManu=new JMenu("编辑(E)");
    		formatMenu=new JMenu("格式(O)");
    		checkMenu=new JMenu("查看(V)");
    		helpMenu=new JMenu("帮助(H)");
    		statusLabel=new JLabel("              状态栏");
    		frame.add(statusLabel,BorderLayout.SOUTH);
    		area=new JTextArea();
    		scpane=new JScrollPane(area);
    		pMenu=new JPopupMenu();
    		
    		//图片导入路径
    		newicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"new.png");
    		openicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"open.png");
    		saveicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"save.png");
    		saveanothericon=new ImageIcon("d:"+File.separator+"111"+File.separator+"saveanother.png");
    		closeicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"close.png");
    		linewrapicon=new ImageIcon("d:"+File.separator+"111"+File.separator+"d.png");
    		
    		//调用图片
    		newitem=new JMenuItem("新建(N)",newicon);
    		openitem=new JMenuItem("打开(O)",openicon);
    		saveitem=new JMenuItem("保存(S)",saveicon);
    		saveanotheritem=new JMenuItem("另存为(A)",saveanothericon);
    		closeitem=new JMenuItem("关闭(X)",closeicon);
    		pageitem=new JMenuItem("页面设置(U)");
    		pointitem=new JMenuItem("打印(P)");
    		
    		repealitem=new JMenuItem("撤销(U)");
    		cutitem=new JMenuItem("剪切(T)");
    		copyitem=new JMenuItem("复制(C)");
    		stickitem=new JMenuItem("粘贴(V)");
    		deleteitem=new JMenuItem("删除(L)");
    		finditem=new JMenuItem("查找(F)");
    		findnextitem=new JMenuItem("查找下一个(FN)");
    		replaceitem=new JMenuItem("替换(H)");
    		turnitem=new JMenuItem("转到(G)");
    		allitem=new JMenuItem("全选(A)");
    		timedateitem=new JMenuItem("时间/日期(D)");
    		
    		linewrapitem=new JMenuItem("自动换行(W)",linewrapicon);
    		fontitem=new JMenuItem("字体(F)");
    		
    		stateitem=new JMenuItem("状态栏(S)");
    		
    		checkhelpitem=new JMenuItem("查看帮助(H)");
    		aboutitem=new JMenuItem("关于(A)");
    		
    		//添加为菜单项
    		fileMenu.add(newitem);
    		fileMenu.add(openitem);
    		fileMenu.add(saveitem);
    		fileMenu.add(saveanotheritem);
    		fileMenu.addSeparator();
    		fileMenu.add(pageitem);
    		fileMenu.add(pointitem);
    		fileMenu.addSeparator();
    		fileMenu.add(closeitem);
    		
    		editManu.add(repealitem);
    		editManu.addSeparator();
    		editManu.add(cutitem);
    		editManu.add(copyitem);
    		editManu.add(stickitem);
    		editManu.add(deleteitem);
    		editManu.addSeparator();
    		editManu.add(finditem);
    		editManu.add(findnextitem);
    		editManu.add(replaceitem);
    		editManu.add(turnitem);
    		editManu.addSeparator();
    		editManu.add(allitem);
    		editManu.add(timedateitem);
    		
    		repealitem.setEnabled(false);
    		cutitem.setEnabled(false);
    		copyitem.setEnabled(false);
    		deleteitem.setEnabled(false);
    		
    		
    		formatMenu.add(linewrapitem);
    		formatMenu.add(fontitem);
    		
    		checkMenu.add(stateitem);
    		
    		helpMenu.add(checkhelpitem);
    		helpMenu.add(aboutitem);
    		
    		prepealitem=new JMenuItem("撤销(U)");
    		pcutitem=new JMenuItem("剪切(T)");
    		pcopyitem=new JMenuItem("复制(C)");
    		pstickitem=new JMenuItem("粘帖(P)");
    		pdeleteitem=new JMenuItem("删除(D)");
    		pallitem=new JMenuItem("全选(A)");
    		ptimedateitem=new JMenuItem("时间/日期(D)");
    		 
    		prepealitem.setEnabled(false);
    		
    		pMenu.add(prepealitem);
    		pMenu.addSeparator();
    		pMenu.add(pcutitem);
    		pMenu.add(pcopyitem);
    		pMenu.add(pstickitem);
    		pMenu.add(pdeleteitem);
    		pMenu.add(pallitem);
    		pMenu.add(ptimedateitem);
    		
    		//设置快捷键和提示信息
    		newitem.setMnemonic(KeyEvent.VK_N);
    		newitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_DOWN_MASK));
    		openitem.setMnemonic(KeyEvent.VK_O);
    		openitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_DOWN_MASK));
    		saveitem.setMnemonic(KeyEvent.VK_S);
    		saveitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_DOWN_MASK));
    		saveanotheritem.setMnemonic(KeyEvent.VK_A);
    		saveanotheritem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
    		closeitem.setMnemonic(KeyEvent.VK_X);
    		closeitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_DOWN_MASK));
    		pageitem.setMnemonic(KeyEvent.VK_U);
    		pointitem.setMnemonic(KeyEvent.VK_P);
    		pointitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_DOWN_MASK));
    		
    		repealitem.setMnemonic(KeyEvent.VK_Z);
    		repealitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_DOWN_MASK));
    		cutitem.setMnemonic(KeyEvent.VK_T);
    		cutitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_DOWN_MASK));
    		copyitem.setMnemonic(KeyEvent.VK_C);
    		copyitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
    		stickitem.setMnemonic(KeyEvent.VK_V);
    		stickitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
    		deleteitem.setMnemonic(KeyEvent.VK_L);
    		deleteitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_DOWN_MASK));
    		allitem.setMnemonic(KeyEvent.VK_A);
    		allitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
    		timedateitem.setMnemonic(KeyEvent.VK_D);
    		timedateitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_DOWN_MASK));
    		finditem.setMnemonic(KeyEvent.VK_F);
    		finditem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_DOWN_MASK));
    		findnextitem.setMnemonic(KeyEvent.VK_L);
    		findnextitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_DOWN_MASK));
    		replaceitem.setMnemonic(KeyEvent.VK_H);
    		replaceitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H,InputEvent.CTRL_DOWN_MASK));
    		turnitem.setMnemonic(KeyEvent.VK_G);
    		turnitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G,InputEvent.CTRL_DOWN_MASK));
    		
    		prepealitem.setMnemonic(KeyEvent.VK_Z);
    		prepealitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_DOWN_MASK));
    		pcutitem.setMnemonic(KeyEvent.VK_T);
    		pcutitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,InputEvent.CTRL_DOWN_MASK));
    		pcopyitem.setMnemonic(KeyEvent.VK_C);
    		pcopyitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_DOWN_MASK));
    		pstickitem.setMnemonic(KeyEvent.VK_V);
    		pstickitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_DOWN_MASK));
    		pdeleteitem.setMnemonic(KeyEvent.VK_L);
    		pdeleteitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L,InputEvent.CTRL_DOWN_MASK));
    		pallitem.setMnemonic(KeyEvent.VK_A);
    		pallitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_DOWN_MASK));
    		ptimedateitem.setMnemonic(KeyEvent.VK_D);
    		ptimedateitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_DOWN_MASK));
    		
    		linewrapitem.setMnemonic(KeyEvent.VK_W);
    		fontitem.setMnemonic(KeyEvent.VK_F);
    		stateitem.setMnemonic(KeyEvent.VK_S);
    		
    		checkhelpitem.setMnemonic(KeyEvent.VK_H);
    		aboutitem.setMnemonic(KeyEvent.VK_A);
    		
    		//添加事件监听器
    		newitem.addActionListener(this);
    		openitem.addActionListener(this);
    		saveitem.addActionListener(this);
    		saveanotheritem.addActionListener(this);
    		closeitem.addActionListener(this);
    		pageitem.addActionListener(this);
    		pointitem.addActionListener(this);
    		
    		repealitem.addActionListener(this);
    		cutitem.addActionListener(this);
    		copyitem.addActionListener(this);
    		stickitem.addActionListener(this);
    		deleteitem.addActionListener(this);
    		allitem.addActionListener(this);
    		timedateitem.addActionListener(this);
    		finditem.addActionListener(this);
    		findnextitem.addActionListener(this);
    		replaceitem.addActionListener(this);
    		turnitem.addActionListener(this);
    		
    		linewrapitem.addActionListener(this);
    		fontitem.addActionListener(this);
    		
    		stateitem.addActionListener(this);
    		
    		checkhelpitem.addActionListener(this);
    		aboutitem.addActionListener(this);
    		
    		area.addMouseListener(new MouseAdapter()
    		 { public void mousePressed(MouseEvent e){ 
    			 if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件
    				 { pMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单
    				 }
    			 checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性
    			 area.requestFocus();//编辑区获取焦点
    		 	}
    		 public void mouseReleased(MouseEvent e)
    		 { if(e.isPopupTrigger())//返回此鼠标事件是否为该平台的弹出菜单触发事件
    		 { pMenu.show(e.getComponent(),e.getX(),e.getY());//在组件调用者的坐标空间中的位置 X、Y 显示弹出菜单
    		 }
    		 checkMenuItemEnabled();//设置剪切,复制,粘帖,删除等功能的可用性
    		 area.requestFocus();//编辑区获取焦点
    		 }
    		 });
    		
    		prepealitem.addActionListener(this);
    		pcutitem.addActionListener(this);
    		pcopyitem.addActionListener(this);
    		pstickitem.addActionListener(this);
    		pdeleteitem.addActionListener(this);
    		pallitem.addActionListener(this);
    		ptimedateitem.addActionListener(this);
    		
    		
    		//编辑区注册事件监听(与撤销操作有关)
    		area.getDocument().addUndoableEditListener(undoHandler);
    		area.getDocument().addDocumentListener(this);
    		
    		//添加主菜单项
    		bar.add(fileMenu);
    		bar.add(editManu);
    		bar.add(formatMenu);
    		bar.add(checkMenu);
    		bar.add(helpMenu);
    		
    		//添加面板及显示
    		frame.add(scpane);
    		frame.setJMenuBar(bar);
    		frame.setSize(800, 550);
    		frame.setLocation(400, 200);
    		
    		frame.setVisible(true);
    		frame.addWindowListener(new WindowAdapter() {
    			public void windowClosing(WindowEvent arg0) {
    				System.exit(1);
    			}
    		});
    		
    		
    	}
    
    	
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		Object obj=e.getSource();
    		if(obj instanceof JMenuItem) {
    			JMenuItem item=(JMenuItem)obj;
    			if(item==newitem) {
    				new TextPad();
    	 	
    			}else if(item==openitem) {
    				chooser=new JFileChooser();
    				chooser.showOpenDialog(null);
    				file=chooser.getSelectedFile();
    				try {
    					FileInputStream fis=new FileInputStream(file);
    					byte[] b;
    					try {
    						b = new byte[fis.available()];
    						fis.read(b);
    						area.append(new String(b));
    						fis.close();
    					} catch (IOException e1) {
    						
    						e1.printStackTrace();
    					}
    					
    				} catch (FileNotFoundException e1) {
    					
    					e1.printStackTrace();
    				}
    			}else if(item==saveanotheritem) {
    				chooser=new JFileChooser();
    				chooser.showSaveDialog(null);
    				file=chooser.getSelectedFile();
    				try {
    					if(!file.exists()) {
    						file.createNewFile();
    					}
    					FileOutputStream fos=new FileOutputStream(file);
    					byte[] b=area.getText().getBytes();
    					fos.write(b);
    					fos.close();
    				} catch (IOException e1) {
    				
    					e1.printStackTrace();
    				}
    			}else if(item==saveitem) {
    				file=chooser.getSelectedFile();
    				try {
    					FileOutputStream fos=new FileOutputStream(file);
    					byte[] b=area.getText().getBytes();
    					fos.write(b);
    					
    					fos.close();
    				} catch (FileNotFoundException e1) {
    					
    					e1.printStackTrace();
    				} catch (IOException e1) {
    					
    					e1.printStackTrace();
    				}
    			
    			}else if(item==closeitem) {
    				 //System.exit(1);
    				 int exitChoose=JOptionPane.showConfirmDialog(this,"确定要退出吗?","退出提示",JOptionPane.OK_CANCEL_OPTION);
    				 if(exitChoose==JOptionPane.OK_OPTION){ 
    					 System.exit(0);
    				 }else{ 
    					 return;
    				 }
    			}else if(item==cutitem||item==pcutitem) {
    				area.cut();
    
    			}else if(item==copyitem||item==pcopyitem) {
    				area.copy();
    
    			}else if(item==stickitem||item==pstickitem) {
    				area.paste();
    
    			}else if(item==allitem||item==pallitem) {
    				area.selectAll();
    
    			}else if(item==deleteitem||item==pdeleteitem) {
    	 
    				String temp = area.getSelectedText();//获得鼠标拖动选取的文本 
    				int start = area.getSelectionStart(); 
    				int end = area.getSelectionEnd(); 
    				area.replaceRange("",start,end);//选中的区域用""替换 
    					    
    			}else if(item==repealitem||item==prepealitem) {
    				if(e.getSource()==repealitem || e.getSource()==prepealitem){
    					area.requestFocus();
    			 		if(undo.canUndo()){
    			 			try{ 
    			 					undo.undo();
    			 			}catch (CannotUndoException ex){ 
    			 					System.out.println("Unable to undo:" + ex);
    			 					//ex.printStackTrace();
    			 			}
    			 		}
    			 if(!undo.canUndo()){ 
    				 repealitem.setEnabled(false);
    				 prepealitem.setEnabled(false);
    			 }
    			 }
    				
    			}else if(item==timedateitem||item==ptimedateitem) {
    				 Date d = new Date();
    				 SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    				 String dateNewStr=sdf.format(d);
    				 area.append(dateNewStr);
    				 
    			}else if(item==pageitem) {
    				area.requestFocus();
    				JOptionPane.showMessageDialog(this,"对不起,此功能尚未实现!","提示",JOptionPane.WARNING_MESSAGE);
    				
    			}else if(item==pointitem) {
    				area.requestFocus();
    				JOptionPane.showMessageDialog(this,"对不起,此功能尚未实现!","提示",JOptionPane.WARNING_MESSAGE);
    				
    			}else if(item==finditem) {
    				
    				
    			}else if(item==findnextitem) {
    				
    				
    			}else if(item==replaceitem) {
    				
    				
    			}else if(item==turnitem) {
    				
    				
    			}
    			
    			else if(item==linewrapitem) {
    				
    				
    				if(!i) {
    					area.setLineWrap(true);    
    //					area.setWrapStyleWord(true);
    
    					
    					i=true;
    				}else {
    					area.setLineWrap(false);    
    //					area.setWrapStyleWord(false); 
    					
    					i=false;
    				}
    				
    				
    			}else if(item==fontitem) {
    				area.requestFocus();
    				font();
    			}else if(item==stateitem) {
    				if(!i) {
    					statusLabel.setVisible(false);   
    					i=true;
    				}else {
    					statusLabel.setVisible(true);
    					i=false;
    				}
    				
    				
    			}else if(item==checkhelpitem) {
    				 area.requestFocus();
    				 JOptionPane.showMessageDialog(this,"请自行百度","帮助主题",JOptionPane.INFORMATION_MESSAGE);
    
    			}else if(item==aboutitem) {
    					area.requestFocus();
    					JOptionPane.showMessageDialog(this,
    				 "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    "+
    				 " 编写者:张文龙    
    "+
    				 " 编写时间:2019年11月 
    "+
    				 " qq:908866340 
    "+
    				 " 一些地方借鉴他人  
    "+
    				 "&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    ",
    				 "记事本",JOptionPane.INFORMATION_MESSAGE);
    			}
    		}
    
    	}
    
    	private void checkMenuItemEnabled() {
    		String selectText=area.getSelectedText();
    		 if(selectText==null){ 
    			 cutitem.setEnabled(false);
    			 pcutitem.setEnabled(false);
    			 copyitem.setEnabled(false);
    			 pcopyitem.setEnabled(false);
    			 deleteitem.setEnabled(false);
    			 pdeleteitem.setEnabled(false);
    			 
    		 	 }else{
    		 		cutitem.setEnabled(true);
    		 		pcutitem.setEnabled(true); 
    		 		copyitem.setEnabled(true);
    		 		pcopyitem.setEnabled(true);
    		 		deleteitem.setEnabled(true);
    		 		pdeleteitem.setEnabled(true);
    		 }
    		 //粘帖功能可用性判断
    		 Transferable contents=clipBoard.getContents(this);
    		 if(contents==null){ 
    			 stickitem.setEnabled(false);
    			 pstickitem.setEnabled(false);
    		 }else{ 
    			 stickitem.setEnabled(true);
    			 pstickitem.setEnabled(true); 
    		 }
    		 
    		
    	}
    	class UndoHandler implements UndoableEditListener{ 
    		 public void undoableEditHappened(UndoableEditEvent uee){ 
    			 undo.addEdit(uee.getEdit());
    	 }
    	 }
    
    	public void font(){ 
    
    	     final JDialog fontDialog=new JDialog(this,"字体设置",false);
    		 Container con=fontDialog.getContentPane();
    		 con.setLayout(new FlowLayout(FlowLayout.LEFT));
    
    		 JLabel fontLabel=new JLabel("字体(F):");
    		 fontLabel.setPreferredSize(new Dimension(100,20));//构造一个Dimension,并将其初始化为指定宽度和高度
    
    		 JLabel styleLabel=new JLabel("字形(Y):");
    		 styleLabel.setPreferredSize(new Dimension(100,20));
    
    		 JLabel sizeLabel=new JLabel("大小(S):");
    		 sizeLabel.setPreferredSize(new Dimension(100,20));
    
    		 final JLabel sample=new JLabel("张文龙的记事本");
    
    		 final JTextField fontText=new JTextField(9);
    		 fontText.setPreferredSize(new Dimension(200,20));
    
    		 final JTextField styleText=new JTextField(8);
    		 styleText.setPreferredSize(new Dimension(200,20));
    
    		 final int style[]={Font.PLAIN,Font.BOLD,Font.ITALIC,Font.BOLD+Font.ITALIC};
    		 final JTextField sizeText=new JTextField(5);
    		 sizeText.setPreferredSize(new Dimension(200,20));
    
    		 JButton okButton=new JButton("确定");
    		 JButton cancel=new JButton("取消");
    
    		 cancel.addActionListener(new ActionListener(){ 
    	         public void actionPerformed(ActionEvent e){ 
    	             fontDialog.dispose(); 
    		    }
    		 });
    
    		 Font currentFont=area.getFont();
    		 fontText.setText(currentFont.getFontName());
    		 fontText.selectAll();
    		 
    		 if(currentFont.getStyle()==Font.PLAIN){
    	         styleText.setText("常规");
    	     }
    		 else if(currentFont.getStyle()==Font.BOLD){
    	         styleText.setText("粗体");
    	     }
    		 else if(currentFont.getStyle()==Font.ITALIC){
    	         styleText.setText("斜体");
    	     }
    		 else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC)){
    	         styleText.setText("粗斜体");
    	     }
    		 
    		 styleText.selectAll();
    
    		 String str=String.valueOf(currentFont.getSize());
    		 sizeText.setText(str);
    		 sizeText.selectAll();
    
    		 final JList fontList,styleList,sizeList;
    		 GraphicsEnvironment ge=GraphicsEnvironment.getLocalGraphicsEnvironment();
    		 final String fontName[]=ge.getAvailableFontFamilyNames();
    
    		 fontList=new JList(fontName);
    		 fontList.setFixedCellWidth(86);
    		 fontList.setFixedCellHeight(20);
    		 fontList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    
    		 final String fontStyle[]={"常规","粗体","斜体","粗斜体"};
    
    		 styleList=new JList(fontStyle);
    		 styleList.setFixedCellWidth(86);
    		 styleList.setFixedCellHeight(20);
    		 styleList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    		 if(currentFont.getStyle()==Font.PLAIN){
    	         styleList.setSelectedIndex(0);
    	     }
    		 
    		 else if(currentFont.getStyle()==Font.BOLD){
    	         styleList.setSelectedIndex(1);
    	     }
    		 
    		 else if(currentFont.getStyle()==Font.ITALIC){
    	         styleList.setSelectedIndex(2);
    	     }
    		 
    		 else if(currentFont.getStyle()==(Font.BOLD+Font.ITALIC)){
    	         styleList.setSelectedIndex(3);
    	     }
    		 
    		 final String fontSize[]={"8","9","10","11","12","14","16","18","20","22","24","26","28","36","48","72"};
    		 sizeList=new JList(fontSize);
    		 sizeList.setFixedCellWidth(43);
    		 sizeList.setFixedCellHeight(20);
    		 sizeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    
    		 fontList.addListSelectionListener(new ListSelectionListener(){
    	        public void valueChanged(ListSelectionEvent event){
    	            fontText.setText(fontName[fontList.getSelectedIndex()]);
    		        fontText.selectAll();
    		        Font sampleFont1=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
    		        sample.setFont(sampleFont1);
    		    }
    		 });
    		 styleList.addListSelectionListener(new ListSelectionListener(){
    	        public void valueChanged(ListSelectionEvent event){
    	            int s=style[styleList.getSelectedIndex()];
    		        styleText.setText(fontStyle[s]);
    		        styleText.selectAll();
    		        Font sampleFont2=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
    		        sample.setFont(sampleFont2);
    		 }
    		 });
    		 sizeList.addListSelectionListener(new ListSelectionListener(){ 
    	         public void valueChanged(ListSelectionEvent event){ 
    	            sizeText.setText(fontSize[sizeList.getSelectedIndex()]);
    		        //sizeText.requestFocus();
    		        sizeText.selectAll(); 
    		        Font sampleFont3=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
    		        sample.setFont(sampleFont3);
    		    }
    		 });
    		 okButton.addActionListener(new ActionListener(){ 
    	        public void actionPerformed(ActionEvent e){ 
    	        Font okFont=new Font(fontText.getText(),style[styleList.getSelectedIndex()],Integer.parseInt(sizeText.getText()));
    		    area.setFont(okFont);
    		    fontDialog.dispose();
    		    }
    		 });
    
    		 JPanel samplePanel=new JPanel();
    		 samplePanel.setBorder(BorderFactory.createTitledBorder("示例"));
    		 
    		 samplePanel.add(sample);
    		 JPanel panel1=new JPanel();
    		 JPanel panel2=new JPanel();
    		 JPanel panel3=new JPanel();
    		 panel2.add(fontText);
    		 panel2.add(styleText);
    		 panel2.add(sizeText);
    		 panel2.add(okButton);
    		 panel3.add(new JScrollPane(fontList));//JList不支持直接滚动,所以要让JList作为JScrollPane的视口视图
    		 panel3.add(new JScrollPane(styleList));
    		 panel3.add(new JScrollPane(sizeList));
    		 panel3.add(cancel);
    		 con.add(panel1);
    		 con.add(panel2);
    		 con.add(panel3);
    		 con.add(samplePanel);
    		 fontDialog.setSize(350,340);
    		 fontDialog.setLocation(200,200);
    		 fontDialog.setResizable(false);
    		 fontDialog.setVisible(true);
    		 }
    	public void insertUpdate(DocumentEvent e) {
    		repealitem.setEnabled(true);
    		prepealitem.setEnabled(true);
    	}
    	
    	public void removeUpdate(DocumentEvent e) {
    		repealitem.setEnabled(true);
    		prepealitem.setEnabled(true);
    	}
    	
    	public void changedUpdate(DocumentEvent e) {
    		repealitem.setEnabled(true);
    		prepealitem.setEnabled(true);
    	}
    }
    
    
    

    运行截图

  • 相关阅读:
    hdu 5517 Triple(二维树状数组)
    bzoj 3998: [TJOI2015]弦论(后缀自动机)
    hdu 5008 Boring String Problem(后缀数组+rmq)
    hdu 4622 Reincarnation(后缀自动机)
    hdu 6025 card card card(双指针)
    寒武纪camp Day3
    寒武纪camp Day2
    寒武纪camp Day1
    Codeforces 920G(二分+容斥)
    Codeforces 920E(补图BFS)
  • 原文地址:https://www.cnblogs.com/zzwwll/p/11959411.html
Copyright © 2011-2022 走看看