📄 testanimationmenu.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 + -