⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 undomgrtest.java

📁 使用javax.swing.undo的例子
💻 JAVA
字号:
import java.awt.*;import java.awt.event.*;import java.awt.geom.*;import java.net.*;import java.applet.*;import java.util.LinkedList;import java.util.Iterator;import javax.swing.*;import javax.swing.undo.*;import java.lang.Exception;/** * A very simple applet demonstrating usage of javax.swing.undo package. */public class undomgrtest extends JApplet {    JButton linebutton;    JButton circlebutton;    JButton undobutton;    JButton redobutton;    JPanel buttonpanel;    JGraphPanel graphpanel;    LineListener linelistener;    CircleListener circlelistener;    UndoListener undolistener;    RedoListener redolistener;    LinkedList shapes;    UndoManager undomgr;    public void init() {	// Force SwingApplet to come up in the System L&F	String laf = UIManager.getSystemLookAndFeelClassName();	try {	    UIManager.setLookAndFeel(laf);	    // If you want the Cross Platform L&F instead, comment out the above line and	    // uncomment the following:	    // UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());	} catch (UnsupportedLookAndFeelException exc) {	    System.err.println("Warning: UnsupportedLookAndFeel: " + laf);	} catch (Exception exc) {	    System.err.println("Error loading " + laf + ": " + exc);	}        getContentPane().setLayout(new BorderLayout());        linebutton = new JButton("Draw Line");	circlebutton = new JButton("Draw Circle");	undobutton = new JButton("Undo");	redobutton = new JButton("Redo");	graphpanel = new JGraphPanel(false);	graphpanel.setPreferredSize(new Dimension(300,300));	buttonpanel = new JPanel(false);	buttonpanel.setLayout(new FlowLayout());	buttonpanel.add(linebutton);        buttonpanel.add(circlebutton);	buttonpanel.add(undobutton);	buttonpanel.add(redobutton);	getContentPane().add(buttonpanel,BorderLayout.SOUTH);	getContentPane().add(graphpanel,BorderLayout.NORTH);	linelistener = new LineListener();	linebutton.addActionListener(linelistener);	circlelistener = new CircleListener();	circlebutton.addActionListener(circlelistener);	undolistener = new UndoListener();	undobutton.addActionListener(undolistener);	redolistener = new RedoListener();	redobutton.addActionListener(redolistener);	shapes = new LinkedList();	undomgr = new UndoManager();    }    public void stop() {    }    class JGraphPanel extends JPanel{	public JGraphPanel(boolean doublebuffer)	{	    super(doublebuffer);	}	public void paintComponent(Graphics g) {	    Graphics2D g2 = (Graphics2D)g;	    g2.setColor(Color.white);	    g2.fill3DRect(0,0,getWidth(),getHeight(),true);	    Iterator it;	    Shape shape;	    g2.setColor(Color.black);	    for(it = shapes.iterator();it.hasNext();){		shape = (Shape)it.next();		g2.draw(shape);	    }	}    }    class LineListener implements ActionListener{	Shape temp;	public void actionPerformed(ActionEvent e){	    temp = new Line2D.Double(0.0,0.0,Math.random()*100.0,Math.random()*100.0);	    shapes.add(temp);	    repaint();	    UndoableEdit edit = new graphEdit(temp);	    undomgr.addEdit(edit);	}    }    class CircleListener implements ActionListener{	Shape temp;	public void actionPerformed(ActionEvent e){	    temp = new Ellipse2D.Double(0.0,0.0,Math.random()*100.0,Math.random()*100.0);	    shapes.add(temp);	    repaint();	    UndoableEdit edit = new graphEdit(temp);	    undomgr.addEdit(edit);	}    }    class UndoListener implements ActionListener{	public void actionPerformed(ActionEvent e){	    try{		undomgr.undo();	    }catch(CannotUndoException ex){		System.err.println("Can't Undo More");	    }	}    }    class RedoListener implements ActionListener{	public void actionPerformed(ActionEvent e){	    try{		undomgr.redo();	    }catch(CannotRedoException ex){		System.err.println("Can't Redo More");	    }	}    }    class graphEdit extends AbstractUndoableEdit{	Shape shape;	public graphEdit(Shape _shape){	    shape = _shape;	}	public void undo(){	    shapes.remove(shape);	    repaint();	    System.out.println("undo draw line");	}	public void redo(){	    shapes.add(shape);	    repaint();	    System.out.println("redo draw line");	}    }	public static void main(String[] args) {		undomgrtest run = new undomgrtest();		run.init();		run.start();	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -