当前位置:编程学习 > JAVA >>

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

\
[java]
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++); 
 
                   
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,