简明现代魔法 -> Java编程语言 -> SWT之路:随机生成4个不重复的数字

SWT之路:随机生成4个不重复的数字

2009-11-21

本例用List控件显示数组元素。

效果演示

注释写到代码里了

package SWT;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.List;

public class RandNum {

	protected Shell shell;
	private Text text;
	static int upperLimit;
	static int[] result;
	static int[] numlist;
	static List resultShow;

	/**
	 * Launch the application.
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			RandNum window = new RandNum();
			window.open();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * Open the window.
	 */
	public void open() {
		Display display = Display.getDefault();
		createContents();
		shell.open();
		shell.layout();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
	}

	/**
	 * Create contents of the window.
	 */
	protected void createContents() {
		shell = new Shell();
		shell.setSize(450, 300);
		shell.setText("随机数字生成器");
		{
			Group group = new Group(shell, SWT.NONE);
			group.setText("用户输入");
			group.setBounds(10, 10, 422, 130);
			{
				Label label = new Label(group, SWT.NONE);
				label.setBounds(10, 32, 153, 16);
				label.setText("请输入生成随机数字的上限:");
			}
			{
				text = new Text(group, SWT.BORDER);
				text.setBounds(169, 30, 70, 18);
			}
			{
				Button button = new Button(group, SWT.NONE);
				button.setBounds(169, 67, 72, 22);
				button.setText("生成");
				button.addSelectionListener(new SelectionAdapter() {  
                    public void widgetSelected(SelectionEvent e) {  
                        // 读取输入  
                    	upperLimit = Integer.parseInt(text.getText());
                        //System.out.println(upperLimit);
                        // 在栈区建立一个整型数组,数组元素有upperLimit个
                		numlist = new int[upperLimit];
                		// 这个数组空间用来存储结果的4个数字
                		result = new int[4];
                		
                		
                		// 给数字列表数组赋值,值的范围是1-10
                		for(int i = 0; i < numlist.length; i++){
                			numlist[i] = i;
                		}
                		
                		// 将numlist数组的下标随机化,再将随机下标的数组元素赋给result
                		for(int i = 0; i < result.length; i++){
                			int rand = (int)(Math.random()*upperLimit);
                			result[i] = numlist[rand];
                			numlist[rand] = numlist[upperLimit - 1];
                			upperLimit--;
                		}
                        
                		// 清除之前的List控件内容
                		resultShow.removeAll();
                        for(int i = 0; i < result.length; i++) {   
                        	resultShow.add(result[i] + "");
						  }  
                        
                    }  
                }); 
			}
		}
		{
			Group group = new Group(shell, SWT.NONE);
			group.setText("随机数字生成");
			group.setBounds(10, 146, 422, 110);
			{
				resultShow = new List(group, SWT.BORDER);
				resultShow.setBounds(10, 21, 402, 79);
			}
		}

	}
}
随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们