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

📄 rrbemenu.java

📁 RoboRally Board editor 是一个用来创建战棋类游戏的Java程序。
💻 JAVA
字号:
import javax.swing.*;import java.awt.event.*;import javax.swing.event.*;import java.util.*;/** * Menues for RRBE */public class RRBEMenu extends JMenuBar     implements ActionListener, MenuListener, RRBEElementChooser {    private RRBEMainWindow window;    private String about = "";    private JMenu file;    private JMenu tools;    private JMenu theme;    private JMenu view;    private JMenu chooseTheme;    private JMenu help;    private JMenuItem fileNew;    private JMenuItem fileLoad;    private JMenuItem fileSave;    private JMenuItem fileSaveAs;    private JMenuItem fileExport;    private JMenuItem filePreferences;    private JMenuItem fileExit;    private JMenuItem viewZoomIn;    private JMenuItem viewZoomOut;    private JMenuItem addTheme;    private JMenuItem helpAbout;    private Vector factories;    /**     * Create the menues     */    public RRBEMenu(RRBEMainWindow w) {	factories = new Vector();		window = w;	file = new JMenu("File");	file.setMnemonic(KeyEvent.VK_F);	fileNew = new JMenuItem("New Board", KeyEvent.VK_N);	fileNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,						      ActionEvent.CTRL_MASK));	fileLoad = new JMenuItem("Open Saved Board", KeyEvent.VK_L);	fileLoad.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,						       ActionEvent.CTRL_MASK));	fileSave = new JMenuItem("Save Board", KeyEvent.VK_L);	fileSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,						       ActionEvent.CTRL_MASK));	fileSaveAs = new JMenuItem("Save Board As", KeyEvent.VK_L);	fileSaveAs.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F12,						       0));	fileExport = new JMenuItem("Export...", KeyEvent.VK_E);	fileExport.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F11,						       0));							      	filePreferences = new JMenuItem("Preferences...", KeyEvent.VK_L);	filePreferences.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F10,							      0));	fileExit = new JMenuItem("Exit", KeyEvent.VK_X);	fileExit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F4,						       ActionEvent.ALT_MASK));	tools = new JMenu("Tools");	tools.setMnemonic(KeyEvent.VK_T);	theme = new JMenu("Themes");	theme.setMnemonic(KeyEvent.VK_T);	chooseTheme = new JMenu("Choose Theme");	chooseTheme.setMnemonic(KeyEvent.VK_C);	chooseTheme.addMenuListener(this);	theme.add(chooseTheme);	addTheme = new JMenuItem("Add a theme");	addTheme.addActionListener(this);	theme.add(addTheme);	view = new JMenu("View");	viewZoomIn = new JMenuItem("Zoom In");	viewZoomIn.addActionListener(this);	viewZoomOut = new JMenuItem("Zoom Out");	viewZoomOut.addActionListener(this);	view.add(viewZoomIn);	view.add(viewZoomOut);		help = new JMenu("Help");	help.setMnemonic(KeyEvent.VK_H);	helpAbout = new JMenuItem("About", KeyEvent.VK_A);		fileNew.addActionListener(this);	fileLoad.addActionListener(this);	fileSave.addActionListener(this);	fileSaveAs.addActionListener(this);	fileExport.addActionListener(this);	filePreferences.addActionListener(this);	fileExit.addActionListener(this);			helpAbout.addActionListener(this);		this.add(file);	file.add(fileNew);	file.add(fileLoad);	file.add(fileSave);	file.add(fileSaveAs);	file.addSeparator();	file.add(fileExport);	file.add(filePreferences);	file.addSeparator();	file.add(fileExit);		this.add(tools);	this.add(theme);		this.add(view);	this.add(help);	help.add(helpAbout);    }    /**     * Menues is an element chooser.     * Adds a element factory to tools menu.     */    public void addElementFactory(RRBEElementFactory f) {	ToolMenuItem i = new ToolMenuItem(f);	factories.add(i);	tools.add(i);	i.addActionListener(this);    }    /**     * Set selected element factory     */    public void setSelected(RRBEElementFactory f) {	for (int i = 0; i < factories.size(); i++) {	    ToolMenuItem ti = (ToolMenuItem) factories.get(i);	    ti.setSelected(f == ti.factory);	}    }        /**     * Remove all factories from tool menu.     */    public void removeFactories() {	factories.clear();	tools.removeAll();    }        public void menuCanceled(MenuEvent e) {}    public void menuDeselected(MenuEvent e) {}    /**     * Called then choose theme menu selected.     * Updates themes.     */    public void menuSelected(MenuEvent e) {	    chooseTheme.removeAll();	    RRBETheme[] themes = RRBEGlobal.getThemes();	    for (int i = 0; i < themes.length; i++) {		JMenuItem themeMenu = new JMenuItem(themes[i].toString());		themeMenu.addActionListener(new ThemeSelector(window, themes[i]));		chooseTheme.add(themeMenu);	    }    }        public void actionPerformed(ActionEvent e) {	if (e.getSource() == fileExport) {	    RRBEExportWindow ew = new RRBEExportWindow(window);	    ew.pack();	    ew.show();	}	else if (e.getSource() == fileNew) {	    RRBENewBoardWindow nb = new RRBENewBoardWindow(window);	    nb.pack();	    nb.show();	}	else if (e.getSource() == fileLoad) {	    window.load();	}	else if (e.getSource() == fileSave) {	    window.save();	}	else if (e.getSource() == fileSaveAs) {	    window.saveAs();	}	else if (e.getSource() == fileExit) {	    window.exit();	}	else if (e.getSource() == helpAbout) {	    window.showAbout();	} 	else if (e.getSource() == viewZoomIn) {	    window.getBoard().zoom((float) 2);	    window.repaintAll();	} 	else if (e.getSource() == viewZoomOut) {	    window.getBoard().zoom((float) 0.5);	    window.repaintAll();	} 	else if (e.getSource() == addTheme) {	    String newPath;	    newPath = JOptionPane		.showInputDialog(window, "Enter the path to the theme");	    if (!RRBEThemeReader.readThemeName(newPath)		.equals(RRBEThemeReader.NONAME)) {		RRBEGlobal.addTheme(newPath);		RRBEGlobal.writeIniFile();	    }	}	else if (e.getSource() == filePreferences) {	    window.showSettings();	} else {	    for (int i = 0; i < factories.size(); i++) {		ToolMenuItem ti = (ToolMenuItem) factories.get(i);		if (e.getSource() == ti) {		    window.setElementFactory(ti.factory);		}	    }	}    }    private class ThemeSelector implements ActionListener {	private RRBEMainWindow window;	private RRBETheme theme;	public ThemeSelector(RRBEMainWindow w, RRBETheme theme) {	    window = w;	    this.theme = theme;	}	public void actionPerformed(ActionEvent e) {	    RRBEGlobal.curthemepath = theme.getPath();	    window.changeTheme();	}    }    private class ToolMenuItem extends JRadioButtonMenuItem {	public RRBEElementFactory factory;	public ToolMenuItem(RRBEElementFactory factory) {	    super (factory.name, factory.getSmallIcon());	    this.factory = factory;	}    }}

⌨️ 快捷键说明

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