`

计分器

J# 
阅读更多

代码:

public class Sample1 {
	private static Composite container1;
	private static List<String> teamMarks = new ArrayList<String>();
	private static List<CLabel> listTeam = new ArrayList<CLabel>();
	private static List<CLabel> listOrder = new ArrayList<CLabel>();
	private static Timer timer;
	private static CLabel CLabelTimer;

	public static void main(String[] args) {
		Display display = new Display();
		Shell shell = new Shell(display);
		shell.setText("计分器");
		createArea(shell);
		shell.pack();
		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch())
				display.sleep();
		}
		display.dispose();
	}

	private static void createArea(Shell parent) {

		parent.setBackground(new Color(null,173, 223, 237));
		parent.setBackgroundMode(SWT.INHERIT_DEFAULT);
		parent.setLayout(new GridLayout());

		Composite container = new Composite(parent, SWT.NONE);
		container.setLayout(new GridLayout(2, false));
		container.setLayoutData(new GridData(GridData.FILL));

		CLabel cLabel = new CLabel(container, SWT.CENTER | SWT.BORDER);
		cLabel.setText("研发部知识竞赛计分表");
		GridData gridData = new GridData(SWT.CENTER | GridData.FILL_HORIZONTAL);
		gridData.horizontalSpan = 2;
		cLabel.setLayoutData(gridData);
		cLabel.setFont(new Font(null,"新宋体",32,SWT.BOLD));

		container1 = new Composite(container, SWT.BORDER);
		container1.setLayout(new GridLayout(1, true));
		gridData = new GridData(SWT.CENTER | GridData.FILL_HORIZONTAL);
		gridData.verticalSpan = 2;
		container1.setLayoutData(gridData);
		container1.setLayoutData(new GridData(GridData.FILL_BOTH));
		{
			Composite container11 = new Composite(container1, SWT.NONE);
			container11.setLayout(new GridLayout(3, true));
			container11.setLayoutData(new GridData(GridData.FILL_BOTH));

			CLabel CLabel1 = new CLabel(container11, SWT.CENTER | SWT.NONE);
			CLabel1.setText("参赛队");
			CLabel1.setLayoutData(new GridData(SWT.CENTER | GridData.FILL_BOTH));
			CLabel1.setFont(new Font(null,"新宋体",30,SWT.NONE));

			CLabel CLabel11 = new CLabel(container11, SWT.CENTER | SWT.NONE);
			CLabel11.setText("比赛得分");
			CLabel11.setLayoutData(new GridData(SWT.CENTER | GridData.FILL_BOTH));
			CLabel11.setFont(new Font(null,"新宋体",30,SWT.NONE));

			CLabel CLabel2 = new CLabel(container11, SWT.CENTER | SWT.NONE);
			CLabel2.setText("名次");
			CLabel2.setLayoutData(new GridData(SWT.CENTER | GridData.FILL_BOTH));
			CLabel2.setFont(new Font(null,"新宋体",30,SWT.NONE));

			for(int i=0; i<7; i++) {
				addTeam(container1,i);
			}
		}

		Composite container2 = new Composite(container, SWT.BORDER);
		container2.setLayout(new GridLayout(1, true));
		gridData = new GridData(SWT.CENTER | GridData.FILL_VERTICAL);
		gridData.verticalSpan = 1;
		container2.setLayoutData(gridData);
		{
			CLabel CLabel1 = new CLabel(container2, SWT.CENTER | SWT.NONE);
			CLabel1.setText("倒计时");
			CLabel1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

			CLabelTimer = new CLabel(container2, SWT.CENTER | SWT.BORDER);
			CLabelTimer.setFont(new Font(null,"新宋体",60,SWT.NONE));
			CLabelTimer.setText("0");
			CLabelTimer.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

			final Text text = new Text(container2, SWT.CENTER | SWT.BORDER);
			text.setText("10");
			text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
			text.addVerifyListener(new VerifyListener() {

				public void verifyText(VerifyEvent e) {
					e.doit = e.text.length() == 0
					|| Character.isDigit(e.text.charAt(0));
				}

			});


			Composite container21 = new Composite(container2, SWT.BORDER);
			container21.setLayout(new GridLayout(2, true));
			container21.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));

			Button button1 = new Button(container21, SWT.CENTER | SWT.NONE);
			button1.setText("开始");
			button1.setFont(new Font(null,"新宋体",20,SWT.NONE));
			button1.setLayoutData(new GridData(SWT.CENTER));
			button1.addSelectionListener(new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					CLabelTimer.setText(text.getText());

					if(timer != null) {
						timer.cancel();
					}

					timer = new Timer();
					TimerTask task = new TimerTask(){
						public void run() {
							int tmp = Integer.parseInt(CLabelTimer.getText());
							if(tmp > 0) {
								tmp = tmp - 1;
							}
							final int tmptmp = tmp;
							Display.getDefault().syncExec(new Runnable() {
								public void run() {
									CLabelTimer.setText(tmptmp + "");
								}
							});
							if(tmptmp == 0) {
								timer.cancel();
//								Toolkit toolkit = Toolkit.getDefaultToolkit(); 
//								toolkit.beep();//发出声音
								try {
									FileInputStream fileau = new FileInputStream(new File("src/sound.wav"));
//									FileInputStream("sloop.au");
									AudioStream as=new AudioStream(fileau);
									AudioPlayer.player.start(as);
								}
								catch (Exception e) {}

								Display.getDefault().syncExec(new Runnable() {
									public void run() {
										MessageBox messageBox = new MessageBox(Display.getCurrent().getShells()[0], SWT.YES|SWT.ICON_INFORMATION);
										messageBox.setMessage("时间到!");
										messageBox.setText("提示");
										messageBox.open();
									}
								});
							}
						}
					};

					timer.schedule(task, 1000, 1000);
				}
			});

			Button button2 = new Button(container21, SWT.CENTER | SWT.NONE);
			button2.setText("清零");
			button2.setFont(new Font(null,"新宋体",20,SWT.NONE));
			button2.setLayoutData(new GridData(SWT.RIGHT));
			button2.addSelectionListener(new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					timer.cancel();
					Display.getDefault().syncExec(new Runnable() {
						public void run() {
							CLabelTimer.setText("0");
						}
					});
				}
			});

		}

		Composite xxxx = new Composite(container2, SWT.NONE);
		xxxx.setLayout(new GridLayout(2, false));
		gridData = new GridData(SWT.CENTER | GridData.FILL_VERTICAL);
		gridData.verticalSpan = 1;
		gridData.verticalAlignment = SWT.BOTTOM;
		xxxx.setLayoutData(gridData);

		Composite container22 = new Composite(container2, SWT.BORDER);
		container22.setLayout(new GridLayout(2, false));
		gridData = new GridData(SWT.CENTER | GridData.FILL_HORIZONTAL);
		gridData.verticalSpan = 1;
		gridData.verticalAlignment = SWT.BOTTOM;
		container22.setLayoutData(gridData);

		{
			CLabel CLabel2 = new CLabel(container22, SWT.CENTER | SWT.NONE);
			CLabel2.setText("队号:");

			final Text text1 = new Text(container22, SWT.CENTER | SWT.BORDER);
			text1.setText("1");
			text1.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
			text1.addVerifyListener(new VerifyListener() {
				public void verifyText(VerifyEvent e) {
					e.doit = e.text.length() == 0
					|| Character.isDigit(e.text.charAt(0));
				}
			});

			CLabel CLabel3 = new CLabel(container22, SWT.CENTER | SWT.NONE);
			CLabel3.setText("队名:");

			final Text text2 = new Text(container22, SWT.BORDER);
			text2.setText("");
			text2.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));


			Button buttonxx = new Button(container22, SWT.CENTER | SWT.NONE);
			buttonxx.setText("改名");
			buttonxx.setVisible(false);
			buttonxx.setLayoutData(new GridData(SWT.CENTER));


			Button button3 = new Button(container22, SWT.CENTER | SWT.NONE);
			button3.setText("改名");
			gridData = new GridData(SWT.CENTER | GridData.FILL_HORIZONTAL);
			gridData.verticalSpan = 1;
			gridData.verticalAlignment = SWT.RIGHT;
			button3.setLayoutData(gridData);
			button3.addSelectionListener(new SelectionAdapter() {
				public void widgetSelected(SelectionEvent e) {
					String s1 = text1.getText();
					String s2 = text2.getText();
					if(s1.length()>0 && s2.length()>0) {
						int i = Integer.parseInt(s1);
						if(i>0 && i<8) {
							listTeam.get(i-1).setText(s2);
						}
					}
				}
			});
		}
	}

	private static void addTeam(Composite container1, final int num) {
		teamMarks.add(num, new String("100"));
		final Button button1, button2, button3;

		Composite container11 = new Composite(container1, SWT.NONE);
		container11.setLayout(new GridLayout(3, true));
		container11.setLayoutData(new GridData(GridData.FILL_BOTH));

		CLabel CLabel1 = new CLabel(container11, SWT.CENTER | SWT.NONE);
		CLabel1.setText("第 "+ (num+1) +" 队");
		CLabel1.setLayoutData(new GridData(SWT.CENTER | GridData.FILL_BOTH));
		CLabel1.setFont(new Font(null,"新宋体",30,SWT.NONE));
		listTeam.add(CLabel1);

		Composite container111 = new Composite(container11, SWT.NONE);
		container111.setLayout(new GridLayout(3, true));
		container111.setLayoutData(new GridData(SWT.CENTER | GridData.FILL_BOTH));

		button1 = new Button(container111, SWT.CENTER | SWT.NONE);
		button1.setText("1");
		button1.setFont(new Font(null,"新宋体",30,SWT.NONE));
		button1.setLayoutData(new GridData(SWT.CENTER | GridData.FILL_BOTH));

		button2 = new Button(container111, SWT.CENTER | SWT.NONE);
		button2.setText("0");
		button2.setFont(new Font(null,"新宋体",30,SWT.NONE));
		button2.setLayoutData(new GridData(SWT.CENTER | GridData.FILL_BOTH));
		button2.addMouseListener(new MouseAdapter() {
			public void mouseDown(MouseEvent e) {
				int tmp = Integer.parseInt(teamMarks.get(num));
				if(e.button == 1) {
					if(tmp < 990) {
						tmp = tmp + 10;
					}
				} else {
					if(tmp >= 10) {
						tmp = tmp - 10;
					}
				}
				teamMarks.set(num, tmp + "");

				char[] charTmp = (tmp + "").toCharArray();
				if(tmp >= 100) {
					button1.setText(charTmp[0] + "");
					button2.setText(charTmp[1] + "");
				} else if (tmp >= 10) {
					button1.setText("0");
					button2.setText(charTmp[0] + "");
				} else {
					button1.setText("0");
					button2.setText("0");
				}


				refreshOrder();
			}
		});

		button3 = new Button(container111, SWT.CENTER | SWT.NONE);
		button3.setText("0");
		button3.setFont(new Font(null,"新宋体",30,SWT.NONE));
		button3.setLayoutData(new GridData(SWT.CENTER | GridData.FILL_BOTH));
		button3.addMouseListener(new MouseAdapter() {
			public void mouseDown(MouseEvent e) {
				int tmp = Integer.parseInt(teamMarks.get(num));
				if(e.button == 1) {
					if(tmp < 995) {
						tmp = tmp + 5;
					}
				} else {
					if(tmp > 0) {
						tmp = tmp - 5;
					}
				}
				teamMarks.set(num, tmp + "");

				char[] charTmp = (tmp + "").toCharArray();
				if(tmp >= 100) {
					button1.setText(charTmp[0] + "");
					button2.setText(charTmp[1] + "");
					button3.setText(charTmp[2] + "");
				} else if (tmp >= 10) {
					button1.setText("0");
					button2.setText(charTmp[0] + "");
					button3.setText(charTmp[1] + "");
				} else {
					button1.setText("0");
					button2.setText("0");
					button3.setText(charTmp[0] + "");
				}

				refreshOrder();
			}


		});

		CLabel CLabel2 = new CLabel(container11, SWT.CENTER | SWT.NONE);
		CLabel2.setText("1");
		CLabel2.setLayoutData(new GridData(SWT.CENTER | GridData.FILL_BOTH));
		CLabel2.setFont(new Font(null,"新宋体",30,SWT.NONE));
		listOrder.add(CLabel2);
	}


	private static void refreshOrder() {

		int[] r = new int[7];
		for(int i=0; i<7; i++) {
			r[i] = 1;
		}

		//逐对比较所有元素
		for ( int i = 0; i < 7; i++) {
			for ( int j = i+1; j < 7; j++) {
				int frs = Integer.parseInt(teamMarks.get(i));
				int sec = Integer.parseInt(teamMarks.get(j));
				if (frs < sec) {
					r[i]++;
				}else if (frs > sec) {
					r[j]++;
				}
			}
		}

		for(int i=0; i<7; i++) {
			listOrder.get(i).setText(r[i] + "");

		}

	}
}

 

图示:



 
实现功能:

1,可以修改队名。

2,有倒计时。

3,倒计时到了,显示对话框和声音。

4,分数分百十个,鼠标点击百没用、十加一、个加5,并且依照总分自动排名次。

可以补充的功能:

1,所有的标题文字来自xml,这样便于多语言的支持。

2,参加队的数目可以变。

3,整体布局自适应窗口的变化。

4,设置可以用sash,可以支持隐藏。

。。。
 

  • 大小: 69 KB
  • sound.zip (33.8 KB)
  • 描述: 一个sound.wav文件
  • 下载次数: 2
分享到:
评论

相关推荐

    篮球比赛计分器.rar

    篮球比赛计分器是一种用于记录篮球比赛中两队得分情况的设备。在电子技术与软件编程领域,设计一个篮球比赛计分器涉及到多个知识点,其中包括硬件开发、嵌入式系统、模拟电路、数字电路以及人机交互界面等。下面将...

    EDA篮球比赛计分器课程设计_EDA篮球计分_

    **EDA篮球比赛计分器课程设计** EDA(Electronic Design Automation)技术在电子工程领域中扮演着至关重要的角色,它主要用于电路设计、分析、仿真、布局布线等过程。在这个篮球比赛计分器的课程设计中,EDA技术被...

    数电课程设计-篮球计分器.pdf

    《数电课程设计-篮球计分器》是一个针对网络工程专业学生的数字系统课程设计项目,旨在让学生通过设计和实现一个篮球计分器来理解和应用数字电子技术。该计分器能够记录两队的得分,支持加分、减分、清零等操作,并...

    篮球计分器C程序

    【篮球计分器C程序】是一个专为51系列单片机设计的计分系统,主要使用89C52型号的单片机作为核心处理器。这个程序旨在为篮球比赛提供一个直观、简易的计分解决方案,既可以通过PROTEUS软件进行仿真验证,也能在实际...

    单片机课程设计_基于51单片机的篮球计分器_

    在本项目中,我们主要探讨的是如何利用51单片机设计一个篮球计分器。51单片机是微控制器领域中常见的型号,因其结构简单、资源丰富、易于学习而广泛应用于各种嵌入式系统设计。在这个课程设计中,我们将涉及到以下几...

    篮球计时计分器篮球计时计分器

    篮球计时计分器是一种基于单片机技术的设备,主要应用于篮球比赛,用来准确地计时和计分。这款计时计分器基于AT89S51单片机,具备多种功能,如计时、计分、比赛提示、时间设定、暂停、比分交换以及防止误操作等。 ...

    篮球计分器(第二种设计图)

    篮球计分器是一种常见的电子设备,常用于篮球比赛,用于实时记录两队的得分情况。在计算机组成原理的课程设计中,实现一个篮球计分器能够帮助学生深入理解硬件和软件之间的交互,以及数字系统的基本原理。这个设计图...

    单片机C51篮球计时计分器课程设计.pdf

    "单片机C51篮球计时计分器课程设计.pdf" 本资源是一个关于单片机C51篮球计时计分器课程设计的文件,旨在设计并制作一个用于赛场的篮球赛计时计分器,实现记录整个赛程的比赛时间、随时刷新甲、乙两队在整个赛程中的...

    android 篮球比赛计分器

    【Android篮球比赛计分器】是一款专为篮球比赛设计的应用程序,它提供了全面的比赛管理功能,包括计时、分数统计、球员信息管理等。这款应用是基于Android平台开发的,利用了Android系统的特性来实现丰富的用户界面...

    通用计时计分器

    在IT领域,计时计分器是一种非常实用的工具,尤其在学校体育考试和各类竞赛活动中。这类软件或系统设计的主要目标是准确、高效地记录和显示参赛者的时间和得分,确保比赛的公平公正。以下是对“通用计时计分器”这一...

    简易篮球计分器 数电

    【简易篮球计分器 数电】相关知识点 在电子工程领域,"简易篮球计分器"通常是指一种基于数字电子技术设计的设备,用于记录篮球比赛中双方队伍的得分。这样的计分器对于初学者理解数字电子电路(数电)原理非常有...

    篮球计分器修改版(共阳极)_单片机篮球计分器_

    【标题】:“篮球计分器修改版(共阳极)”指的是一个针对篮球比赛设计的计分系统,它经过了优化或改进,适用于单片机技术。这里的“共阳极”通常是指LED显示模块的工作模式,其中所有LED的阳极(正极)连接在一起并...

    Android入门小程序--篮球计分器

    【Android入门小程序--篮球计分器】是一款专为初学者设计的安卓应用程序,它提供了篮球比赛得分记录的基本功能。这个项目对于想要学习Android应用开发的人来说是一个极好的起点,因为它涵盖了移动应用开发的基础知识...

    基于单片机的篮球赛计时计分器单片机期末课程设计.doc

    【基于单片机的篮球赛计时计分器】 引言 随着单片机技术的广泛应用,各种基于单片机的计时计分系统在体育赛事中得到了普及,例如使用单片机控制LCD液晶显示屏或LED七段显示的计时计分器。本设计将介绍一种由AT89C51...

    基于STC89C51单片机的篮球计时计分器设计.pdf

    篮球计时计分器是一种用于篮球比赛的计时与计分设备,能够在比赛过程中及时提供准确的赛程时间、球队得分等信息。设计一个基于STC89C51单片机的篮球计时计分器涉及到嵌入式系统的设计、硬件电路的搭建、软件程序的...

    单片机课程设计之篮球计分器设计

    在本项目中,我们探讨的是一个基于单片机的篮球计分器的设计,这是一个典型的单片机课程设计项目,旨在让学生掌握单片机的基本原理及其在实际应用中的操作。篮球计分器是体育赛事中不可或缺的设备,它可以准确地记录...

    篮球计时计分器篮球计时计分器篮球计时计分器

    篮球计时计分器是一种基于AT89C52单片机设计的设备,主要用于篮球比赛中的时间管理和分数记录。该计时计分器利用定时器T0的中断功能实现计时,具备广泛的计时范围,并且允许用户设定小时和分钟。在显示方面,它分为...

    精品专题资料(2021-2022年收藏)基于单片机AT89C51控制的篮球计分器课程设计报告.doc

    【标题】和【描述】提到的是一个基于单片机AT89C51的篮球计分器课程设计报告,这是一份教育资料,主要探讨如何使用单片机技术来实现篮球比赛的计分功能。【标签】进一步确认了这份资料的教育属性。以下是关于这个...

    基于C51的篮球计分器

    【基于C51的篮球计分器】是一个嵌入式系统项目,主要使用了C51编程语言来设计和实现一个简易的篮球比赛计分器。C51是Microchip公司的标准C编译器,专为8位的8051微控制器系列设计,广泛应用于各种嵌入式系统开发。在...

Global site tag (gtag.js) - Google Analytics