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

📄 minesweepermenu.java

📁 模仿windows的扫雷游戏 SWT编写的 需要log4j 1.2.4
💻 JAVA
字号:
package cn.pandaoen.game.minesweeper.actions;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;

import java.util.Locale;

import cn.pandaoen.game.minesweeper.C11N;
import cn.pandaoen.game.minesweeper.MineSweeper;
import cn.pandaoen.game.minesweeper.res.Resources;

/**
 * The instance of this class creates all menus. 
 * @author pan
 */
public class MineSweeperMenu {

	MenuItem gameItem;
	MenuItem newItem;
	MenuItem[] modeItems = new MenuItem[4];
	MenuItem soundItem;
	MenuItem langItem;
	MenuItem[] langItems;
	MenuItem bestTimeItem;
	MenuItem exitItem;
	MenuItem helpItem;
	MenuItem contentItem;
	MenuItem aboutItem;
	MineSweeper mineSweeper;
	Shell shell;

	public MineSweeperMenu(MineSweeper mineSweeper) {
		this.mineSweeper = mineSweeper;
		this.shell = mineSweeper.getShell();
		Menu menuBar = new Menu(shell, SWT.BAR);
		createMenus(menuBar);
		shell.setMenuBar(menuBar);
		addListeners();
	}

	void createMenus(Menu menuBar) {
		Resources res = Resources.res;
		C11N c11n = C11N.c11n;

		gameItem = new MenuItem(menuBar, SWT.CASCADE);
		gameItem.setText(res.getString("Game")); //$NON-NLS-1$
		Menu gameMenu = new Menu(shell, SWT.DROP_DOWN);
		gameItem.setMenu(gameMenu);

		newItem = new MenuItem(gameMenu, SWT.PUSH);
		newItem.setText(res.getString("New")); //$NON-NLS-1$
		newItem.setAccelerator(SWT.F2);

		new MenuItem(gameMenu, SWT.SEPARATOR);
		modeItems[0] = new MenuItem(gameMenu, SWT.RADIO);
		modeItems[0].setText(res.getString("Beginner")); //$NON-NLS-1$
		modeItems[1] = new MenuItem(gameMenu, SWT.RADIO);
		modeItems[1].setText(res.getString("Intermediate")); //$NON-NLS-1$
		modeItems[2] = new MenuItem(gameMenu, SWT.RADIO);
		modeItems[2].setText(res.getString("Expert")); //$NON-NLS-1$
		modeItems[3] = new MenuItem(gameMenu, SWT.RADIO);
		modeItems[3].setText(res.getString("Custom")); //$NON-NLS-1$
		modeItems[c11n.getMode()].setSelection(true);

		new MenuItem(gameMenu, SWT.SEPARATOR);
		soundItem = new MenuItem(gameMenu, SWT.CHECK);
		soundItem.setText(res.getString("Sound")); //$NON-NLS-1$
		soundItem.setSelection(c11n.getSound());
		langItem = new MenuItem(gameMenu, SWT.CASCADE);
		langItem.setText(res.getString("Language")); //$NON-NLS-1$
		Menu langMenu = new Menu(shell, SWT.DROP_DOWN);
		langItem.setMenu(langMenu);
		createLanguageMenu(langMenu);

		new MenuItem(gameMenu, SWT.SEPARATOR);
		bestTimeItem = new MenuItem(gameMenu, SWT.PUSH);
		bestTimeItem.setText(res.getString("BestTime")); //$NON-NLS-1$

		new MenuItem(gameMenu, SWT.SEPARATOR);
		exitItem = new MenuItem(gameMenu, SWT.PUSH);
		exitItem.setText(res.getString("Exit")); //$NON-NLS-1$

		helpItem = new MenuItem(menuBar, SWT.CASCADE);
		helpItem.setText(res.getString("Help")); //$NON-NLS-1$
		Menu helpMenu = new Menu(shell, SWT.DROP_DOWN);
		helpItem.setMenu(helpMenu);

		contentItem = new MenuItem(helpMenu, SWT.PUSH);
		contentItem.setText(res.getString("Content")); //$NON-NLS-1$
		contentItem.setAccelerator(SWT.F1);
		contentItem.setImage(res.getImage("help.gif")); //$NON-NLS-1$

		new MenuItem(helpMenu, SWT.SEPARATOR);
		aboutItem = new MenuItem(helpMenu, SWT.PUSH);
		aboutItem.setText(res.getString("About")); //$NON-NLS-1$
		aboutItem.setImage(res.getImage("about.gif")); //$NON-NLS-1$
	}

	void createLanguageMenu(Menu langMenu) {
		Image cn = Resources.res.getImage("chinese.gif"); //$NON-NLS-1$
		Image en = Resources.res.getImage("english.gif"); //$NON-NLS-1$
		Image de = Resources.res.getImage("german.gif"); //$NON-NLS-1$

		Locale[] locales = Resources.res.getLocales();
		langItems = new MenuItem[locales.length];
		Locale selected = C11N.c11n.getLocale();
		for (int i = 0; i < langItems.length; i++) {
			langItems[i] = new MenuItem(langMenu, SWT.RADIO);
			langItems[i].setText(locales[i].getDisplayName());
			langItems[i].setData(locales[i]);
			if (locales[i] == Locale.ENGLISH)
				langItems[i].setImage(en);
			else if (locales[i] == Locale.CHINESE)
				langItems[i].setImage(cn);
			else if (locales[i] == Locale.GERMAN)
				langItems[i].setImage(de);

			if (locales[i] == selected)
				langItems[i].setSelection(true);
		}
	}

	void addListeners() {
		MineSweeperListener mineSweeperListener = new MineSweeperListener(this);

		newItem.addListener(SWT.Selection, mineSweeperListener);
		bestTimeItem.addListener(SWT.Selection, mineSweeperListener);
		exitItem.addListener(SWT.Selection, mineSweeperListener);
		contentItem.addListener(SWT.Selection, mineSweeperListener);
		aboutItem.addListener(SWT.Selection, mineSweeperListener);

		ModeChangeListener modeChangeListener = new ModeChangeListener(this);
		for (int i = 0; i < modeItems.length; i++) {
			modeItems[i].addSelectionListener(modeChangeListener);
			modeItems[i].setData(new Integer(i));
		}

		LangChangeListener langChangeListener = new LangChangeListener(this);
		for (int i = 0; i < langItems.length; i++) {
			langItems[i].addSelectionListener(langChangeListener);
		}
	}
}

⌨️ 快捷键说明

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