`

自己写的一个简单的applet的程序

    博客分类:
  • java
阅读更多
先上图吧:


功能是: 点击play后三个图片会随机的进行变化, 然后点击相应的底下的stop按钮,相应
的图片就会停止下来,上面的stop按钮是三个同时停下来。

做这个有下面的体会:

1. VisualSwing 在eclipse底下特别好用,记录一下
http://download.eclipse.org/tools/ve/updates/1.5.0/

2. 我在重载paint函数的时候, 忘记了super.paint(g), 导致了一些控件没有正确的被绘制

3.  在写线程的时候,忘记加了while(true)这样的代码了, 导致了线程直接退出了,这个说明基础知识还不是很牢固。

4. 对applet的声明周期稍微有点了解了,实际上repaint里面是调用了paint(g)函数的,但是一般是不介意直接调用paint(g),因为paint(g)是由AWT的主线程调用的。

5. 这个里面是没有声音的,另外对图像的处理也很粗糙,感觉一个东西做好还是需要很多心思的。



import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;

import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;

public class StopGo extends JApplet {
	private static final long serialVersionUID = 4396077428436372737L;
	
	private final static int CHERRY_STOP = 50;
	private final static int CLUB_STOP = 60;
	private final static int SPADE_STOP = 30;

	private JPanel rootContentPanel = null;
	private JButton startButton = null;
	private JButton stompButton = null;

	private JButton stopClub = null;
	private JButton stopSpade = null;
	private JButton stopCherry = null;

	private Image[] images = new Image[3];

	private Thread cherryThread; 
	private Thread clubThread;
	private Thread spadeThread;

	private boolean stopClubFlag = true;
	private boolean stopSpadeFlag = true;
	private boolean stopCherryFlag = true;

	private Image lastCherry = null;
	private Image lastClub = null; 
	private Image lastSpade = null;

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	public void init() {
		images[0] = getImage(getCodeBase(), "club.jpg");
		images[1] = getImage(getCodeBase(), "spade.jpg");
		images[2] = getImage(getCodeBase(), "cherry.jpg");

		lastClub = images[0];
		lastSpade = images[1];
		lastCherry = images[2];

		this.setSize(420, 290);
		this.setContentPane(getJContentPane());
	}

	public void paint(Graphics g) {
		super.paint(g);

		g.drawImage(lastClub, 60, 60, this);
		g.drawImage(lastSpade, 190, 60, this);
		g.drawImage(lastCherry, 320, 60, this);
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (rootContentPanel == null) {
			rootContentPanel = new JPanel();
			rootContentPanel.setLayout(null);
			rootContentPanel.add(getStartButton(), null);
			rootContentPanel.add(getStopButton(), null);
			rootContentPanel.add(getStopCherry(), null);
			rootContentPanel.add(getStopStod(), null);
			rootContentPanel.add(getStopValid(), null);
		}
		return rootContentPanel;
	}

	/**
	 * This method initializes startButton
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getStartButton() {
		if (startButton == null) {
			startButton = new JButton("Play");
			startButton.setBounds(new Rectangle(120, 18, 82, 32));
		}
		startButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				cherryThread = new DrawCherryThread();
				clubThread = new DrawClubThread();
				spadeThread = new DrawSpadeThread();

				cherryThread.start();
				clubThread.start();
				spadeThread.start();

				stopCherryFlag = false;
				stopClubFlag = false;
				stopSpadeFlag = false;
				
				startButton.setEnabled(false);
				stompButton.setEnabled(true);
				stopCherry.setEnabled(true);
				stopClub.setEnabled(true);
				stopSpade.setEnabled(true);
			}
		});
		return startButton;
	}

	/**
	 * This method initializes stopButton
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getStopButton() {
		if (stompButton == null) {
			stompButton = new JButton("Stop");
			stompButton.setBounds(new Rectangle(260, 18, 82, 32));
			stompButton.setEnabled(false);
		}
		stompButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				stopCherryFlag = true;
				stopClubFlag = true;
				stopSpadeFlag = true;
				
				startButton.setEnabled(true);
				stompButton.setEnabled(false);
				stopCherry.setEnabled(false);
				stopClub.setEnabled(false);
				stopSpade.setEnabled(false);
			}
		});
		return stompButton;
	}
	
	private void stopAllAndActivePlay(){
		if(stopCherryFlag && stopClubFlag && stopSpadeFlag) {
			startButton.setEnabled(true);
			stompButton.setEnabled(false);
		}
	}

	/**
	 * This method initializes stopCherry
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getStopCherry() {
		if (stopClub == null) {
			stopClub = new JButton("Stop");
			stopClub.setBounds(new Rectangle(46, 181, 82, 32));
			stopClub.setEnabled(false);
		}
		stopClub.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				stopClubFlag = true;
				stopClub.setEnabled(false);
				stopAllAndActivePlay();
			}
		});
		return stopClub;
	}

	/**
	 * This method initializes stopStod
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getStopStod() {
		if (stopSpade == null) {
			stopSpade = new JButton("Stop");
			stopSpade.setBounds(new Rectangle(182, 181, 91, 32));
			stopSpade.setEnabled(false);
		}
		stopSpade.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				stopSpadeFlag = true;
				stopSpade.setEnabled(false);
				stopAllAndActivePlay();
			}
		});
		return stopSpade;
	}

	/**
	 * This method initializes stopValid
	 * 
	 * @return javax.swing.JButton
	 */
	private JButton getStopValid() {
		if (stopCherry == null) {
			stopCherry = new JButton("Stop");
			stopCherry.setBounds(new Rectangle(316, 181, 91, 32));
			stopCherry.setEnabled(false);
		}
		stopCherry.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				stopCherryFlag = true;
				stopCherry.setEnabled(false);
				stopAllAndActivePlay();
			}
		});
		return stopCherry;
	}

	public class DrawClubThread extends Thread {
		@Override
		public void run() {
			while (!stopClubFlag) {
				lastClub = images[new Random().nextInt(3)];

				repaint();
				try {
					Thread.sleep(CLUB_STOP);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}

	public class DrawCherryThread extends Thread {
		@Override
		public void run() {
			while (!stopCherryFlag) {
				lastCherry = images[new Random().nextInt(3)];

				repaint();
				try {
					Thread.sleep(CHERRY_STOP);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}

	public class DrawSpadeThread extends Thread {
		@Override
		public void run() {
			while (!stopSpadeFlag) {
				lastSpade = images[new Random().nextInt(3)];

				repaint();
				try {
					Thread.sleep(SPADE_STOP);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

  • 大小: 54.2 KB
分享到:
评论

相关推荐

    自己写个一个java小程序

    标题中的“自己写的一个java小程序”表明这是一段用Java编程语言编写的简易应用程序,而描述则提到这是作者在空闲时间创作的作品,可能存在功能不全或者需要改进的地方,他期望有其他对Java编程感兴趣的人能参与完善...

    Applet

    Java虚拟机为Applet运行提供了一个“沙箱”环境,限制了Applet的某些操作,以防止恶意代码的执行。例如,Applet不能随意调用其他程序、进行文件读写、加载本地库或与非提供Applet的主机建立socket连接。这些限制确保...

    JavaApplet_javaapplet小程序_java_

    例如,你可以使用`JFrame`、`JPanel`、`JButton`等Swing类创建一个简单的窗口Applet,然后通过`add()`方法添加组件,使用`setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)`设置关闭操作,`setVisible(true)`使窗口...

    简单java Applet做的登录界面

    总的来说,这个"简单java Applet做的登录界面"展示了如何使用Java技术构建一个基本的Web客户端应用程序。尽管Applet在当前Web开发中已较少使用,但它仍然是学习Java GUI编程和客户端-服务器交互的一个经典示例。理解...

    用java 编的小应用程序Applet 实现风扇的简单功能

    在本案例中,我们通过Java Applet 实现了一个具有简单功能的风扇模拟器,该程序允许用户控制风扇的速度并改变扇叶的颜色。 #### 二、项目结构与组件 - **项目核心类**:`MyCanvas` 类继承自 `Applet`,是整个程序的...

    教你构建第一个Java Applet程序

    下面是一个简单的Java Applet示例: ```java import java.applet.Applet; import java.awt.*; public class FirstApplet extends Applet { public void paint(Graphics g) { g.drawRect(0, 0, 250, 100); g....

    JavaApplet与JavaScript

    1. 创建一个继承自 `java.applet.Applet` 的公共子类,子类名应与源程序文件名相同。 2. 编译该源代码文件生成 `.class` 文件。 3. 在 HTML 文件中添加 `<applet>` 标签,指定 `.class` 文件的位置。 4. 当用户访问...

    applet下载操作及权限问题

    - **创建Applet**:编写一个简单的Applet,用于下载服务器上的文件到本地。 - **实现下载逻辑**:使用`java.net.URL`和`java.io`包中的类,如`URL`和`InputStream/OutputStream`,实现从服务器读取数据并写入本地...

    APPLET小动画——JAVA

    虽然Java Applet由于安全性和现代Web技术的崛起,已经逐渐被淘汰,但它仍然是学习Java GUI编程和Web应用程序历史的一个重要组成部分。通过这个作业,学习者可以了解到早期互联网时代的交互式内容是如何创建的,并为...

    《Java语言程序设计基础教程》上机实验指导手册.doc

    2. 编写一个简单的 Java Applet 程序,在 Java Applet 中写两行文字:“这是一个 Java Applet 程序”和“我改变了字体”。 3. 联合编译四个源文件:Hello.java、A.java、B.java 和 C.java,每个源文件只有一个类,...

    图片浏览小程序(java+applet).rar

    标题中的“图片浏览小程序(java+applet)”表明这是一个基于Java技术开发的小程序,主要用于查看图片。Applet是Java的一种小程序,它可以嵌入到HTML页面中,由浏览器来执行。这个项目可能是一个简单的图像查看器,...

    用applet实现自动从服务器上下载文件

    本主题关注的是如何使用Applet来实现一个自动化文件下载功能,即从服务器上下载文件到客户端,而且这个过程无需用户手动操作弹出的保存对话框。 首先,我们需要了解Applet的基本概念。Applet是Java语言编写的一种...

    java 实验代码包括applet,socket

    **Applet** 是Java的一个特性,它允许开发者创建可以在网页中运行的小程序。在Web的早期,Applet常用于增强网页的交互性,如动态图像或简单的游戏。Applet运行在用户的Java虚拟机(JVM)上,通过浏览器插件来支持。...

    java applet 操作本地文件

    - **代码示例**:以下是一个简单的Java Applet示例,展示如何读取本地文件。 ```java package jcomponent; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.io.*; public ...

    聊天系统(java+applet).rar

    这可以通过创建一个简单的Java类来完成。 2. 创建服务器端逻辑:利用JSP创建一个Servlet,负责接收客户端发送的聊天请求,处理消息并将其保存到数据库中。Servlet是Java Web应用程序的核心部分,可以处理HTTP请求和...

    简单java基础习题

    3. Java Application通常由一个或多个类组成,主类包含main方法。通过javac命令编译源代码生成.class字节码文件,这些文件机器无法直接执行,需要JVM(Java虚拟机)解释执行。执行Java程序时,使用java命令并指定...

    《Java程序设计》课程实验指导书程序代码(答案)(实验一)

    熟悉JDK的安装和配置,学习如何编写并运行简单的Application程序和Applet程序(能输出一条简单的问候信息); 三、实验要求: 1. 能正确地安装JDK 2. 熟悉环境变量PATH, CLASSPATH设置方法,熟悉编辑环境 3. 调试程序...

    java程序的编译及运行实验说明

    2. 一个程序中是否能存在两个访问权限为 public 的类?通过程序验证你的判断。 六、线程实验 实验目的:掌握 Java 多线程程序的特点,编译,调试及运行方法。 实验环境:Java 编译系统。 预备知识:线程及进程的...

Global site tag (gtag.js) - Google Analytics