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();
}
}
分享到:
相关推荐
本件超过了上传限制,请...第16~19章主要讲述有关Swing图形开发的其他知识,包括观感器、Swing线程与并发、模型与架构等。第20章通过一个综合实例使读者能够在实际开发中理解和巩固所学知识,从而提高综合应用能力。
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
我们的项目源码基于Java语言和Swing框架,结合了一系列先进的技术和设计模式,以提高开发效率、用户体验和系统性能。 首先,我们使用了Java作为开发语言。Java是一种广泛使用的面向对象编程语言,具有跨平台性和丰富...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
这是清华大学的一套JAVA教程,包括详尽的例子、课后习题与解答、相关计算机英语词汇,就课程本身的内容来说也非常丰富,囊括了以下章节: ★ 第一讲 Java语言概述 ◇课前索引 ◇1.1 java语言的发展史 ◇1.2 java...
编者结合自己多年来在Java研发和技术指导岗位上的经验,总结和汲取Java最核心的技术和能力,为广大Java爱好者提供更好的系统学习Java知识的方法和方向。 目录: 第一章:Java入门; 第二章:MyEclipse的基本...
要求:本实验旨在通过实验,培养学生将JAVA 线程的相关知识点(包括线程调度,线程同步等)有机结合并加以综合应用,在实验中 设计多线程程序的能力。 二、设计阵哼赤贫烹窖炉银稀硕匣趣奋锻换示哮拳染恤刁杨纺意卖...
JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...
JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...
JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。...