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

📄 customdialog.java

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

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;

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

/**
 * @author pan
 */
public class CustomDialog extends Dialog {

	private int rows;
	private int columns;
	private int mines;
	private int input;

	private Text heightText;
	private Text widthText;
	private Text minesText;

	public CustomDialog(Shell parent) {
		super(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
		setText(Resources.res.getString("CustomField")); //$NON-NLS-1$
	}

	public Point getSize() {
		return new Point(rows, columns);
	}

	public void setSize(Point size) {
		rows = size.x;
		columns = size.y;
	}

	public int getMines() {
		return mines;
	}

	public void setMines(int mines) {
		this.mines = mines;
	}

	public int open() {
		// Create the dialog window
		Shell shell = new Shell(getParent(), getStyle());
		shell.setText(getText());
		createContents(shell);
		shell.setImage(Resources.res.getImage("app.gif")); //$NON-NLS-1$
		shell.pack();
		shell.open();
		Display display = getParent().getDisplay();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}

		return input;
	}

	/**
	 * Creates the dialog's contents
	 * 
	 * @param shell the dialog window
	 */
	private void createContents(final Shell shell) {
		GridLayout gridLayout = new GridLayout();
		gridLayout.numColumns = 3;
		gridLayout.marginHeight = 30;
		gridLayout.marginWidth = 20;
		gridLayout.horizontalSpacing = 20;
		gridLayout.verticalSpacing = 10;
		shell.setLayout(gridLayout);

		// Show the message
		Label label = new Label(shell, SWT.NONE);
		label.setText(Resources.res.getString("Height")); //$NON-NLS-1$
		GridData data = new GridData();
		data.horizontalAlignment = GridData.END;
		label.setLayoutData(data);

		heightText = new Text(shell, SWT.BORDER);
		heightText.setText(rows + ""); //$NON-NLS-1$
		data = new GridData(50, -1);
		data.horizontalAlignment = GridData.FILL;
		heightText.setLayoutData(data);

		Composite btnPanel = createButtonPanel(shell);
		data = new GridData();
		data.horizontalAlignment = GridData.END;
		data.verticalAlignment = GridData.FILL;
		data.verticalSpan = 3;
		btnPanel.setLayoutData(data);

		label = new Label(shell, SWT.NONE);
		label.setText(Resources.res.getString("Width")); //$NON-NLS-1$

		widthText = new Text(shell, SWT.BORDER);
		widthText.setText(columns + ""); //$NON-NLS-1$
		data = new GridData();
		data.horizontalAlignment = GridData.FILL;
		widthText.setLayoutData(data);

		label = new Label(shell, SWT.NONE);
		label.setText(Resources.res.getString("Mines")); //$NON-NLS-1$

		minesText = new Text(shell, SWT.BORDER);
		minesText.setText(mines + ""); //$NON-NLS-1$
		data = new GridData();
		data.horizontalAlignment = GridData.FILL;
		minesText.setLayoutData(data);
	}

	private Composite createButtonPanel(final Shell shell) {
		Composite buttonPanel = new Composite(shell, SWT.NONE);
		RowLayout rowLayout = new RowLayout();
		rowLayout.type = SWT.VERTICAL;
		rowLayout.justify = true;
		buttonPanel.setLayout(rowLayout);

		Button ok = new Button(buttonPanel, SWT.PUSH);
		ok.setText(Resources.res.getString("OK")); //$NON-NLS-1$
		shell.setDefaultButton(ok);
		RowData data = new RowData(50, -1);
		ok.setLayoutData(data);
		ok.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent event) {
				try {
					int w = Integer.parseInt(widthText.getText());
					int h = Integer.parseInt(heightText.getText());
					int m = Integer.parseInt(minesText.getText());

					if (w <= 0 || h <= 0 || m <= 0 || w * h < m) {
						//TODO: show error prompt
						event.doit = false;
						return;
					}

					rows = h;
					columns = w;
					mines = m;
					input = SWT.OK;
					shell.close();
				} catch (NumberFormatException e) {
					event.doit = false;
					return;
				}
			}
		});

		Button cancel = new Button(buttonPanel, SWT.PUSH);
		data = new RowData(50, -1);
		cancel.setLayoutData(data);
		cancel.setText(Resources.res.getString("Cancel")); //$NON-NLS-1$
		cancel.addSelectionListener(new SelectionAdapter() {
			public void widgetSelected(SelectionEvent event) {
				input = SWT.CANCEL;
				shell.close();
			}
		});

		return buttonPanel;
	}
}

⌨️ 快捷键说明

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