`
tempsitegoogle
  • 浏览: 872245 次
文章分类
社区版块
存档分类
最新评论

Java Swing与线程的结合应用(三)

 
阅读更多

package com.han;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics2D;
import java.util.Random;

import javax.swing.JFrame;

/**
 * 利用线程在Swing窗口(顶级Container, 与JFrame有区别在于多了标题栏的空间)中画动态线条
 * 
 * @author HAN
 * 
 */
public class ThreadAndSwing_3 extends JFrame {

	/**
	 * 
	 */
	private static final long serialVersionUID = -913556444768132509L;

	static Thread thread;
	Container container;

	enum Colors {
		BLACK(Color.BLACK),
		BLUE(Color.BLUE),
		CYAN(Color.CYAN),
		GREEN(Color.GREEN), 
		ORANGE(Color.ORANGE),
		YELLOW(Color.YELLOW), 
		RED(Color.RED), 
		PINK(Color.PINK), 
		LIGHT_GRAY(Color.LIGHT_GRAY);

		private Color c;

		private Colors(Color c) {
			this.c = c;
		}

		public Color getColor() {
			return this.c;
		}
	}

	public ThreadAndSwing_3() {
		// TODO Auto-generated constructor stub
		container = getContentPane();
		container.setLayout(null);
	}

	void paintJFrame() {
		thread = new Thread(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				/*
				 * Creates a graphics context for Container (you can also try it
				 * for JFrame)
				 */
				Graphics2D g = (Graphics2D) container.getGraphics();

				Colors[] colors = Colors.values();
				Random random = new Random();
				int y2 = 30;
				float width = 0;

				while (true) {
					try {
						Thread.sleep(500);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					
					/*
					 * Returns a pseudorandom, uniformly distributed int value
					 * between 0 (inclusive) and the specified value (exclusive)
					 */
					Color c = colors[random.nextInt(colors.length)].getColor();
					// System.out.println(c);

					g.setColor(c);
					g.setStroke(new BasicStroke(width++));

					/*
					 * Draws a line, using the current color, between the points
					 * (x1, y1) and (x2, y2) in this graphics context's
					 * coordinate system.
					 */
					g.drawLine(30, y2, 100, y2++);

					if (y2 > 70) {
						width = 0;
						y2 = 30;
					}

				}

			}

		});
		thread.start();
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ThreadAndSwing_3 frame = new ThreadAndSwing_3();
		frame.setTitle("利用线程在Swing窗口中画动态线条");
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setBounds(100, 100, 300, 200);
		frame.setVisible(true); // display the frame

		/*
		 * because g will be null if Graphics g = container.getGraphics();
		 * before the display of the related component
		 */
		frame.paintJFrame();
	}

}


分享到:
评论

相关推荐

    Java Swing图形界面开发与案例详解

    本件超过了上传限制,请...第16~19章主要讲述有关Swing图形开发的其他知识,包括观感器、Swing线程与并发、模型与架构等。第20章通过一个综合实例使读者能够在实际开发中理解和巩固所学知识,从而提高综合应用能力。

    Java+swing实现学生信息管理系统源码.zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    Java+swing+mysql实现的汽车租赁管理系统.zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    Java+swing+mysql实现的酒店管理系统项目源码.zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    Java+swing+mysql实现简单的购物系统项目源码.zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    Java+swing+mysql实现的学生选课系统项目源码.zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    Java+swing+mysql实现的学生选课成绩信息管理系统.zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    Java+swing+mysql图书管管理系统(升级版).zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    Java+swing+mysql实现的仓库商品管理系统项目源码.zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    Java+swing+mysql:Oracle实现的飞机订票系统项目源码.zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    Java+swing+mysql电影票购票管理系统(视频+源码).zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    Java+swing+mysql实现的员工工资管理系统项目源码附带视频教程.zip

    我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    清华大学JAVA教程

    这是清华大学的一套JAVA教程,包括详尽的例子、课后习题与解答、相关计算机英语词汇,就课程本身的内容来说也非常丰富,囊括了以下章节: ★ 第一讲 Java语言概述 ◇课前索引 ◇1.1 java语言的发展史 ◇1.2 java...

    编程实践:Java进阶100例

    编者结合自己多年来在Java研发和技术指导岗位上的经验,总结和汲取Java最核心的技术和能力,为广大Java爱好者提供更好的系统学习Java知识的方法和方向。 目录: 第一章:Java入门; 第二章:MyEclipse的基本...

    JAVA线程程序设计(小时钟)实验报告(附完整代码).doc

    要求:本实验旨在通过实验,培养学生将JAVA 线程的相关知识点(包括线程调度,线程同步等)有机结合并加以综合应用,在实验中 设计多线程程序的能力。 二、设计阵哼赤贫烹窖炉银稀硕匣趣奋锻换示哮拳染恤刁杨纺意卖...

    java开源包11

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包4

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

    java开源包6

    JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...

Global site tag (gtag.js) - Google Analytics