Java霓虹灯的循环显示

2024-05-11 18:18
文章标签 java 显示 循环 霓虹灯

本文主要是介绍Java霓虹灯的循环显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第一种方法:

 

package com.lab2;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;

public class NeonLight extends Canvas {    //霓虹灯
 private int x;   //x坐标
 private int y;  //y坐标
 private int flag;
 private int radius;  //半径
 public int getFlag() {
  return flag;
 }
 public void setFlag(int flag) {
  this.flag = flag;
 }
 public NeonLight(int x,int y,int radius,int flag){
  this.x = x; 
  this.y = y;
  this.radius = radius;
  this.flag = flag;
  this.setSize(radius,radius);
 }
 public int getX() {
  return x;
 }
 public void setX(int x) {
  this.x = x;
 }
 public int getY() {
  return y;
 }
 public void setY(int y) {
  this.y = y;
 }
 public void paint(Graphics g){
  if(flag == 0){
   g.setColor(Color.red);
  }
  else if(flag == 1){
   g.setColor(Color.blue);
  }
  else if(flag == 2){
   g.setColor(Color.green);
  }
  else if(flag == 3){
   g.setColor(Color.gray);
  }
  else if(flag == 4){
   g.setColor( Color.pink);
  }
  else if(flag == 5){
   g.setColor(Color.orange);
  }
  else if(flag == 6){
   g.setColor(Color.magenta);
  }
  else if(flag == -1){
   g.setColor( Color.black);
  }
  g.fillOval(0, 0, radius, radius);
 }
}

 

package com.lab2;

import java.awt.Color;

import javax.swing.JApplet;

public class NeonLightTest extends JApplet implements  Runnable{

 private Thread t1,t2,t3,t4,t5,t6,t7;
 private NeonLight neonLight[];   //霓虹灯
 
 @Override
 public void destroy() {
  // TODO Auto-generated method stub
  super.destroy();
 }
 @Override
 public void init() {
  super.init();
  neonLight = new NeonLight[7];
  for(int i = 0;i<neonLight.length;i++){
   neonLight[i] = new NeonLight(60,0,60,i);
   neonLight[i].setLocation(60*(1+i), 0);
   this.add(neonLight[i]);
  }
  this.setSize(1360,800);
  repaint();
  
  t1 = new Thread(this);
  t1.setName("t1");
  t1.start();
 }
 @Override
 public void start() {
  // TODO Auto-generated method stub
  super.start();
 }
 @Override
 public void stop() {
  // TODO Auto-generated method stub
  super.stop();
 }
 public synchronized void LoopShowNeonLight() {   //循环显示霓虹灯
  
  if(Thread.currentThread().getName().equals("t1")){   //表示点亮第二个灯 
   System.out.println("进入线程1");
   int i = 0;
   for(i = 0;i<1;i++){
    neonLight[i].setFlag(1);
    repaint();
   }
   
   for(i = 1;i<neonLight.length;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   
   try {
    this.setSize(1361,800);
    Thread.sleep(500);   //睡眠0.5秒
    t2 = new Thread(this);
    t2.setName("t2");
    t2.start();
   } catch (Exception e) {
    e.printStackTrace();
   }
   
  }
  else if(Thread.currentThread().getName().equals("t2")){  //显示第三个灯
   System.out.println("进入线程2");
   int i = 0;
   for(i = 0;i<1;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   
   neonLight[i].setFlag(2);
   repaint();
   for(i = 2;i<neonLight.length;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   try {
    this.setSize(1362,800);
    Thread.sleep(500);   //睡眠0.5秒
    t3 = new Thread(this);
    t3.setName("t3");
    t3.start();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  else if(Thread.currentThread().getName().equals("t3")){
   System.out.println("进入线程3");
   int i = 0;
   for(i = 0;i<2;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   neonLight[i].setFlag(3);
   repaint();
   for(i = 3;i<neonLight.length;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   try {
    this.setSize(1363,800);
    Thread.sleep(500);   //睡眠0.5秒
    t4 = new Thread(this);
    t4.setName("t4");
    t4.start();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  else if(Thread.currentThread().getName().equals("t4")){
   System.out.println("进入线程4");
   int i = 0;
   for(i = 0;i<3;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   neonLight[i].setFlag(4);
   repaint();
   for(i = 4;i<neonLight.length;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   try {
    this.setSize(1364,800);
    Thread.sleep(500);   //睡眠0.5秒
    t5 = new Thread(this);
    t5.setName("t5");
    t5.start();

   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  else if(Thread.currentThread().getName().equals("t5")){
   System.out.println("进入线程5");
   int i = 0;
   for(i = 0;i<4;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   neonLight[i].setFlag(5);
   repaint();
   for(i = 5;i<neonLight.length;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   try {
    this.setSize(1359,800);
    Thread.sleep(500);   //睡眠0.5秒
    t6 = new Thread(this);
    t6.setName("t6");
    t6.start();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  else if(Thread.currentThread().getName().equals("t6")){
   System.out.println("进入线程6");
   int i = 0;
   for(i = 0;i<5;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   neonLight[i].setFlag(6);
   repaint();
   
   for(i = 6;i<neonLight.length;i++){
    neonLight[i].setFlag(-1);
    repaint();
   }
   try {
    this.setSize(1358,800);
    Thread.sleep(500);   //睡眠0.5秒
    t7 = new Thread(this);
    t7.setName("t7");
    t7.start();
   } catch (Exception e) {
    e.printStackTrace();
   }
  }
  else if(Thread.currentThread().getName().equals("t7")){
   System.out.println("进入线程7");
  int i = 0;
  for(i = 0;i<6;i++){
   neonLight[i].setFlag(-1);
   repaint();
  }
  
  neonLight[i].setFlag(0);
  repaint();
  try {
   this.setSize(1357,800);
   Thread.sleep(500);   //睡眠0.5秒
   t1 = new Thread(this);
   t1.setName("t1");
   t1.start();
  } catch (Exception e) {
   e.printStackTrace();
  }
  }
 }
 @Override
 public void run() {
   LoopShowNeonLight();
 }
}

 

第二种方法:

package pack3;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.io.Serializable;

public class Lamp extends Canvas implements Serializable{
 int x;
 int y;
 int radius;
 Color color;
 public Lamp() {
  for(int i=0; i<7; i++){
   x=20;
   y=20;
   radius=20;
  }
 }
 public Lamp(int x, int y, int radius, Color color) {
  //super();
  this.x = x;
  this.y = y;
  this.radius = radius;
  this.color = color;
  this.setSize(radius, radius);
 }
 public int getX() {
  return x;
 }
 public void setX(int x) {
  this.x = x;
 }
 public int getY() {
  return y;
 }
 public void setY(int y) {
  this.y = y;
 }
 public int getRadius() {
  return radius;
 }
 public void setRadius(int radius) {
  this.radius = radius;
 }
 public Color getColor() {
  return color;
 }
 public void setColor(Color color) {
  this.color = color;
 }
 public void paint(Graphics g){
  g.setColor(color);
  g.fillOval(0, 0, radius, radius); //使用当前颜色填充外接指定矩形框的椭圆
  System.out.println("Lamp:paint");
  System.out.println("Lamp:paint:"+color.toString());
 }
}

 

package pack3;

import java.applet.Applet;
import java.awt.Color;
import java.awt.Graphics;

public class Display extends Applet implements Runnable{
 Lamp lamp[]=new Lamp[7];
 Thread t1,t2;
 int i=0;
 Color color[]={Color.red,Color.pink,Color.blue,Color.green,Color.yellow,Color.orange,Color.cyan};
 Color color2;
 
 @Override
 public void destroy() {
  // TODO Auto-generated method stub
  super.destroy();
  System.out.println("destroy");
 }

 @Override
 public void init() {
  // TODO Auto-generated method stub
  super.init(); 
  t1 = new Thread(this);
  for(int i=0; i<7; i++){
   lamp[i] = new Lamp(20+20*i,20,15,Color.black);
   this.add(lamp[i]);
  }
  this.setSize(300,200);
  t1.start();
 }
 @Override
 public void paint(Graphics g) {
  System.out.println("paint");
 }

 @Override
 public void start() {
  // TODO Auto-generated method stub
  super.start();
  System.out.println("start");
 }

 @Override
 public void stop() {
  // TODO Auto-generated method stub
  super.stop();
  System.out.println("stop");
 }
 @Override
 public void run() {
  while (true) {   
   if(i>0){
    lamp[i-1].setColor(Color.black); //将上一个圆设置回黑色
   }
   i=i%7;
   lamp[i].setColor(color[i]);
   i++; 
   repaint();
   validate();
   try {
    this.setSize(300, 200);
    Thread.sleep(500);  //休眠500ms
    this.setSize(300,201);
   } catch (InterruptedException e) {
    e.printStackTrace();
   }
  }
 }
}

 

 

 

 

 

这篇关于Java霓虹灯的循环显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/980290

相关文章

在Ubuntu上部署SpringBoot应用的操作步骤

《在Ubuntu上部署SpringBoot应用的操作步骤》随着云计算和容器化技术的普及,Linux服务器已成为部署Web应用程序的主流平台之一,Java作为一种跨平台的编程语言,具有广泛的应用场景,本... 目录一、部署准备二、安装 Java 环境1. 安装 JDK2. 验证 Java 安装三、安装 mys

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

SpringBoot操作spark处理hdfs文件的操作方法

《SpringBoot操作spark处理hdfs文件的操作方法》本文介绍了如何使用SpringBoot操作Spark处理HDFS文件,包括导入依赖、配置Spark信息、编写Controller和Ser... 目录SpringBoot操作spark处理hdfs文件1、导入依赖2、配置spark信息3、cont

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

Java中的密码加密方式

《Java中的密码加密方式》文章介绍了Java中使用MD5算法对密码进行加密的方法,以及如何通过加盐和多重加密来提高密码的安全性,MD5是一种不可逆的哈希算法,适合用于存储密码,因为其输出的摘要长度固... 目录Java的密码加密方式密码加密一般的应用方式是总结Java的密码加密方式密码加密【这里采用的

Java中ArrayList的8种浅拷贝方式示例代码

《Java中ArrayList的8种浅拷贝方式示例代码》:本文主要介绍Java中ArrayList的8种浅拷贝方式的相关资料,讲解了Java中ArrayList的浅拷贝概念,并详细分享了八种实现浅... 目录引言什么是浅拷贝?ArrayList 浅拷贝的重要性方法一:使用构造函数方法二:使用 addAll(

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b