• 第十四周课程总结&实验报告(简单记事本的实现)


    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);
    	}
    }
    
    
    

    运行截图

  • 相关阅读:
    MSDN Magazine搞错了
    Visual Studio 2005中设置调试符号(Debug Symbols)
    BCB 6的问题
    吴裕雄天生自然Spring Boot使用Spring Data JPA实现人与身份证的一对一关系映射
    吴裕雄天生自然Spring BootSpring Data JPA
    吴裕雄天生自然Spring BootSpring Boot对JSP的支持
    吴裕雄天生自然Spring BootSpring Boot的异常统一处理
    吴裕雄天生自然Spring Boot使用Spring Data JPA实现Author与Article的一对多关系映射
    吴裕雄天生自然Spring Boot解决 Error creating bean with name 'entityManagerFactory' defined in class path resource
    吴裕雄天生自然Spring Boot@ExceptionHandler注解和@ControllerAdvice注解
  • 原文地址:https://www.cnblogs.com/zzwwll/p/11959411.html
Copyright © 2020-2023  润新知