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

📄 alganimframe.java

📁 java算法大全
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* AlgAnimFrame.java */import java.awt.*;import java.applet.*;import java.io.*;import java.net.*;/** * The <code>AlgAnimFrame</code> class is a top-level window with a title * and border. The layout used is BorderLayout. There is a menubar * created at the north part of the panel. The drawing panel is at the * center and a commentary panel is located at the south. * <p> * This extended frame class holds a set references to the panel/frame objects * used in the algorithm animation. * @see Frame */public class AlgAnimFrame extends Frame {    private AlgAnimApp parentApp;    private URL sourceURL;    private String algname;    private AlgThread alg = null;    private int delay = 200;    //changed this..    //private Panel panel;    private DrawingPanel dpBefore, dpAfter;    private FlowPanel panel;    //private DataPanel dataPanel;    private TextFrame tf;    private ComPanel cpanel;    private boolean step = false, stepWait = false;    private Dimension frameSize = new Dimension(850, 700);    // control panel    private MenuItem quitItem;    private Button runItem, stopItem, stepItem, skipItem;    private CheckboxMenuItem enableAnim, disableAnim;     private CheckboxMenuItem[] dataChoice, delayChoice;    private Menu dataMenu, delayMenu;    private int dataSelected = 0;    private boolean noAnim = false;    Font helv10 = new Font("Helvetica", Font.PLAIN, 10);    private Font helv14 = new Font("Helvetica", Font.PLAIN, 14);    Font helv18 = new Font("Helvetica", Font.PLAIN, 18);    Font helv24 = new Font("Helvetica", Font.PLAIN, 24);    private ControlPanel cp = null;    /**     * Creates and shows the frame consists of a drawing panel, commentary     * panel and control panel. The text frame is now displayed on a separate     * window.     * @param parentApp The applet which results in the creation of this frame     * @param sourceURL The URL of the source code to be displayed on the text     * frame     * @see URL     */    public AlgAnimFrame(AlgAnimApp parentApp, URL sourceURL) {        this.parentApp = parentApp;        this.sourceURL = sourceURL;        this.algname = parentApp.getParameter("algname");	dpBefore = new DrawingPanel();	dpAfter = new DrawingPanel();	//dataPanel = new DataPanel();        setTitle(algname);	move(0, 0);        alg = new AlgThread(this);        setLayout( new BorderLayout() );	setFont(helv14);	cp = new ControlPanel(this, algname);	add("North", cp);	runItem = cp.getRunButton();	stopItem = cp.getStopButton();	stepItem = cp.getStepButton();	skipItem = cp.getSkipButton();	//changed...	panel = new FlowPanel(this);        add("Center", panel);        /* Source panel */        tf = new TextFrame( sourceURL );	        /* Commentary panel */        cpanel = new ComPanel( algname, 1 );        add( "South", cpanel ); 	setMenuBar(createMenuBar());	setMenuBar(createMenuBar());        // generate initial data set        alg.generateData();        pack();        validate();        show();	//if (tf.getTextPanel().getNumLines() > 0)	    //tf.toFront();	cp.refreshButtons();    } // init()    private MenuBar createMenuBar() {	MenuBar mb = new MenuBar();	mb.setFont(helv14);	dataMenu = new Menu("Select");	mb.add(dataMenu);	dataChoice = new CheckboxMenuItem[alg.dataSets.length];	for (int i = 0; i < alg.dataSets.length; i++) {	    dataChoice[i] = new CheckboxMenuItem(alg.dataSets[i]);	    dataMenu.add(dataChoice[i]);	}	if (alg.dataSets.length > 0)	    dataChoice[0].setState(true);	dataMenu.addSeparator();	quitItem = new MenuItem("Quit");	dataMenu.add(quitItem);	/*	Menu algMenu = new Menu("Algorithm", true);	mb.add(algMenu);	runItem = new MenuItem("Run " + algname);	stopItem = new MenuItem("Stop " + algname);	stepItem = new MenuItem("Next Step...");	skipItem = new MenuItem("Skip...");	algMenu.add(runItem);	algMenu.add(stopItem);	algMenu.add(stepItem);	algMenu.add(skipItem);	*/	Menu animMenu = new Menu("Animation");	mb.add(animMenu);	enableAnim = new CheckboxMenuItem("Enable");	enableAnim.setState(true);	disableAnim = new CheckboxMenuItem("Disable");	animMenu.add(enableAnim);	animMenu.add(disableAnim);	animMenu.addSeparator();	delayMenu = new Menu("Delay");	animMenu.add(delayMenu);	delayChoice = new CheckboxMenuItem[5];	for (int i = 0; i < 5; i++) {	    delayChoice[i] = 		new CheckboxMenuItem(""+((i+1)*200)+"msec");	    delayMenu.add(delayChoice[i]);	}	delayChoice[0].setState(true);	Menu viewMenu = new Menu("View");	mb.add(viewMenu);	MenuItem srcCode = new MenuItem("Source Code");	if (tf.getTextPanel().getNumLines() < 1)	    srcCode.disable();	viewMenu.add(new MenuItem("Source Code"));	//viewMenu.add(new MenuItem("Commentary Panel"));	Menu helpMenu = new Menu("About");	mb.setHelpMenu(helpMenu);	helpMenu.add(new MenuItem("Credits"));	helpMenu.add(new MenuItem("Copyrights"));	return mb;    } // createMenuBar()    /**     * Returns the preferred size of the frame. By default, it is set     * to 850x700. It can be modified based on the specific application.     * @return the dimension of the frame     */    public Dimension preferredSize() {        return frameSize;    }    /**     * Sets the size of the frame.     * @param size The desired sized of the frame.     */    public void setDimension(Dimension size) {	this.frameSize = size;    }    /**     * Event handler of the frame. The main purpose of this method is to     * perform the cleanup statements upon receival of the WINDOW_DESTROY     * event message.     */    public boolean handleEvent(Event event) {	if (cp != null) 	    cp.refreshButtons();        if (event.id == Event.WINDOW_DESTROY) {            if (alg != null) {              alg.dpAfter = null;              if (alg.isAlive())                alg.stop();            }            parentApp.start_button.enable();	    tf.dispose();            dispose();        }         return super.handleEvent(event);    }    /**     * Action handler for the buttons and choice buttons in the control     * panel.     * @param e Event invoked     * @param arg Object that invokes the event     */    public boolean action(Event e, Object arg) {        Object target = e.target;         if (target == quitItem) {            getApplet().start_button.enable();            if (getAlg() != null && getAlg().isAlive())                getAlg().stop();            getTextFrame().dispose();            dispose();        } else if (target instanceof CheckboxMenuItem) {	    Menu parent = (Menu)((MenuItem)target).getParent();	    if (parent == dataMenu) {	        for (int i = 0; i < dataChoice.length; i++) {		    if (target == dataChoice[i]) {		        dataSelected = i;			alg.generateData();			dataChoice[i].setState(true);		    } else			dataChoice[i].setState(false);	        }	    } else if (parent == delayMenu) {		for (int i = 0; i < delayChoice.length; i++) {		    if (target == delayChoice[i]) {			setDelay((i+1)*200);			getAlg().setDelay(getDelay());                	setText(0, "Animation delay now set to " + 					getDelay()                        		+ " msec...");			delayChoice[i].setState(true);		    } else			delayChoice[i].setState(false);		}	    } else { // parent is Animation.. -> enable/disable anim		if (target == enableAnim) {		    disableAnim.setState(!enableAnim.getState());		    noAnim = false;		    dpAfter.setNoAnim(noAnim);		} else if (target == disableAnim) {		    enableAnim.setState(!disableAnim.getState());		    noAnim = true;		    dpAfter.setNoAnim(noAnim);		}	    }        } else {	    if (target instanceof MenuItem) {		String text = ((MenuItem)target).getLabel();		if (text.trim().equals("Source Code")) {		    tf.show();		    tf.toFront();		} else if (text.trim().equals("Credits")) {		   setText(0, "Author: Woi L Ang   Supervised by: John Morris");		} else if (text.trim().equals("Copyrights")) {		   setText(0, "Copyright (c) 1998 The Department of Electrical and Electronic Engineering. University of Western Australia");		}	    }	}        return false;    } // action()    /**     * Sets the text string to be displayed on a specific text field on the     * commentary panel return from <code>getComPanel</code>.

⌨️ 快捷键说明

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