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

📄 testanimationmenu.java

📁 用JAVA实现排序等简单算法的演示
💻 JAVA
字号:
package testSortAnimator;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;        

import sortingAnimation.*;
import animationController.*;

public class TestAnimationMenu {
	public static void main(String[] args) {
		// 初始化主画框,调整其位置和宽度,使得显示出来的按钮更漂亮
		MainSwingFrame.init("Aspect-Oriented Algorithm Animation Tools", 
				MainSwingFrame.getWidth(), MainSwingFrame.getHeight(), 
				MainSwingFrame.getStartX(), MainSwingFrame.getStartY(), "windows");
		MenuCreator demo = new MenuCreator(MainSwingFrame.getContentPane(),
				MainSwingFrame.getMainFrame());
		// 创建演示用的菜单和组件,并菜单放置在主画框,组件放置主画框的内容面板
		demo.createMenu();
		// 启动主画框,并进行演示
		MainSwingFrame.start();
	}
}


class MenuCreator {
	private Container place;			// 放置演示组件的容器
	private JFrame topLevelFrame;		// 放置菜单的顶层容器
	private JPanel output;				// 用于输出结果的文本区域
	JComponent[] toBlock = new JComponent[3];
	
	public MenuCreator(Container place, JFrame topLevelFrame) {
		this.place = place;
		this.topLevelFrame = topLevelFrame;
	}
	// 创建用于演示的组件,并返回放置它们的容器
	public Container createMenu() {
		// 创建一文本区域,用来输出用户对菜单的选择结果
		output = new JPanel();
 
		JScrollPane scrollPane = new JScrollPane(output);
		place.add(scrollPane, BorderLayout.CENTER);
		// 创建普通菜单和广播按钮菜单项的监听器
		MenuButtonListener menuButtonListener = new MenuButtonListener();

		// 创建菜单条
		JMenuBar mainMenuBar = new JMenuBar();
		topLevelFrame.setJMenuBar(mainMenuBar);		// 放置在顶层容器

		// 创建第一个主菜单项
		JMenu menu = new JMenu("Algorithms Animation(A)");
		menu.setMnemonic(KeyEvent.VK_A);		// 设置字符键A为快捷键
		mainMenuBar.add(menu);						// 加入到菜单条
		toBlock[0] = menu;

		menu.addSeparator();
		JMenu submenu = new JMenu("Animation Sorting Algorithms(S)");
		submenu.setMnemonic(KeyEvent.VK_S);
		menu.add(submenu);
		
		submenu.addSeparator();
		JMenuItem menuItem = new JMenuItem("Bubble Sorting(B)                      ", KeyEvent.VK_B);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, 
				ActionEvent.CTRL_MASK));
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("BubbleSorting");
		submenu.add(menuItem);
		
		menuItem = new JMenuItem("Quick Sorting(Q)", KeyEvent.VK_Q);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, 
				ActionEvent.CTRL_MASK));
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("QuickSorting");
		submenu.add(menuItem);

		submenu.addSeparator();
		menuItem = new JMenuItem("Insert Sorting(I)", KeyEvent.VK_I);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, 
				ActionEvent.CTRL_MASK));
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("InsertSorting");
		submenu.add(menuItem);

		menuItem = new JMenuItem("Shell Sorting(L)", KeyEvent.VK_L);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, 
				ActionEvent.CTRL_MASK));
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("ShellSorting");
		submenu.add(menuItem);

		submenu.addSeparator();
		menuItem = new JMenuItem("Select Sorting(S)", KeyEvent.VK_S);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, 
				ActionEvent.CTRL_MASK));
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("SelectSorting");
		submenu.add(menuItem);
		
		menuItem = new JMenuItem("Heap Sorting(H)", KeyEvent.VK_H);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, 
				ActionEvent.CTRL_MASK));
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("HeapSorting");
		submenu.add(menuItem);

		submenu.addSeparator();

		menuItem = new JMenuItem("Merge Sorting(M)", KeyEvent.VK_M);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, 
				ActionEvent.CTRL_MASK));
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("MergeSorting");
		submenu.add(menuItem);

		submenu.addSeparator();
		menuItem = new JMenuItem("All Sorting Algorithms");
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("AllSortingAlgorithm");
		submenu.add(menuItem);

		submenu.addSeparator();
		menuItem = new JMenuItem("Options for Sorting Algorithms");
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("SortingOptions");
		submenu.add(menuItem);

		menu.addSeparator();
		menuItem = new JMenuItem("Exit(X)");
		menuItem.setMnemonic(KeyEvent.VK_X);
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("exit");
		menu.add(menuItem);
		
		// 创建第二个主菜单项.
		menu = new JMenu("Tools(T)");
		menu.setMnemonic(KeyEvent.VK_T);
		mainMenuBar.add(menu);
		toBlock[1] = menu;
		
		menu.addSeparator();
		menuItem = new JMenuItem("Options(O)             ", KeyEvent.VK_O);
		menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, 
				ActionEvent.CTRL_MASK));
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("Options");
		menu.add(menuItem);

		// 创建第三个主菜单项.
		menu = new JMenu("Help(H)");
		menu.setMnemonic(KeyEvent.VK_H);
		mainMenuBar.add(menu);
		toBlock[2] = menu;
 
		menu.addSeparator();
		menuItem = new JMenuItem("about...                ");
		menuItem.setAccelerator(KeyStroke.getKeyStroke("F1"));
		menuItem.addActionListener(menuButtonListener);
		menuItem.setActionCommand("about");
		menu.add(menuItem);

		return place;
	}

	// 监听按钮类型菜单项的按下动作
	private class MenuButtonListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			JMenuItem source = (JMenuItem)(e.getSource());
			String command = source.getActionCommand();
			if (command.equals("about")) {
				// 弹出一窗口显示一些信息
				JOptionPane.showMessageDialog(MainSwingFrame.getMainFrame(), 
						"Aspect-oriented Algorithm Animation Tools v1.0", "About",
						JOptionPane.WARNING_MESSAGE);
			} else if (command.equals("exit")) {
				// 退出整个程序
				System.exit(1);
			} else if (command.equals("AllSortingAlgorithm")) {
				MultipleSortingAnimationManager animatorManager = new MultipleSortingAnimationManager();
				animatorManager.initialize(output, toBlock);
				animatorManager.setExitMode(1);
				animatorManager.run();
			} else if (command.equals("Options")) {
				AnimationControllerManager.changeValuesByUser(topLevelFrame);
			} else if (command.equals("SortingOptions")) {
				SortingAnimationControllerManager.changeValuesByUser(topLevelFrame);
			} else {
				SortingAnimationManager manager;
				int sortType = SortingDriver.QUICK_SORT;
				
				if (command.equals("HeapSorting")) {
					manager = new HeapSortingAnimationManager();
					sortType = SortingDriver.HEAP_SORT;
				} else 	if (command.equals("MergeSorting")) {
					manager = new MergeSortingAnimationManager();
					sortType = SortingDriver.MERGE_SORT;
				} else {
					manager = new SortingAnimationManager();
					if (command.equals("BubbleSorting")) sortType = SortingDriver.BUBBLE_SORT;
					else if (command.equals("InsertSorting")) sortType = SortingDriver.INSERT_SORT;
					else if (command.equals("SelectSorting")) sortType = SortingDriver.SELECT_SORT;
					else if (command.equals("ShellSorting")) sortType = SortingDriver.SHELL_SORT;
				}
				
				manager.initialize(output, toBlock);
				manager.setSortType(sortType);
				manager.run();
			}
		}
	}
}

⌨️ 快捷键说明

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