java弹弹球_Java实力弹弹球实现代码

2023-10-11 17:59
文章标签 java 代码 实现 实力 弹球

本文主要是介绍java弹弹球_Java实力弹弹球实现代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先看看效果图:

431c9f7319ae0a0860e6dfbc055319a8.png

直接上代码了。

微调按钮加画布画几个圆,再实现监听。。。

package cn.hncu.threadDemo.thread2;

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.FocusEvent;

import java.awt.event.FocusListener;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

import javax.swing.JSpinner;

import javax.swing.Timer;

import javax.swing.event.ChangeEvent;

import javax.swing.event.ChangeListener;

public class BallsJFrame extends JFrame implements ChangeListener{

private BallsCanvas ball;

private JSpinner spinner;

public BallsJFrame(){

super("弹弹球");

this.setBounds(300, 200, 400, 300);

this.setDefaultCloseOperation(EXIT_ON_CLOSE);

Color colors[] = {Color.red,Color.green,Color.blue,Color.magenta,Color.cyan};

ball = new BallsCanvas(colors,100);

this.getContentPane().add(ball);//默认是CENTER位置

JPanel panel = new JPanel();

this.getContentPane().add(panel,"South");

panel.add(new JLabel("Delay"));

spinner = new JSpinner();

spinner.setValue(100);

panel.add(spinner);

spinner.addChangeListener(this);

this.setVisible(true);

}

@Override

public void stateChanged(ChangeEvent e) {

int value = Integer.parseInt(""+spinner.getValue());

ball.setDelay(value);

}

public static void main(String[] args) {

new BallsJFrame();

}

}

class BallsCanvas extends Canvas implements ActionListener, FocusListener{

private Ball balls[];//存放所有的球

private Timer timer;//javax.swing.Timer

public BallsCanvas(Color colors[] ,int delay){

this.balls = new Ball[colors.length];

for(int i=0,x=40;i

this.balls[i] = new Ball(x,x,colors[i]);

}

//让当前画布监听 焦点事件

this.addFocusListener(this);

timer = new Timer(delay,this);

timer.start();

}

public void setDelay(int delay){

timer.setDelay(delay);

}

@Override

public void paint(Graphics g) {

for(int i=0;i

g.setColor(balls[i].color);

//让每个球的坐标变化一下---(x坐标)

balls[i].x = balls[i].left ? balls[i].x-10:balls[i].x+10;

//当球碰壁时,更改球的方向

if(balls[i].x<=0||balls[i].x>=this.getWidth()-24){

balls[i].left = !balls[i].left;//切换方向

}

//让每个球的坐标变化一下---(y坐标)

balls[i].y = balls[i].up ? balls[i].y-10:balls[i].y+10;

//当球碰壁时,更改球的方向

if(balls[i].y<=0||balls[i].y>=this.getHeight()-22){

balls[i].up = !balls[i].up;//切换方向

}

g.fillOval(balls[i].x, balls[i].y, 20, 20);

}

}

@Override

public void actionPerformed(ActionEvent e) {

//System.out.println("aaa");

repaint();//刷新画布.调用paint(Graphics g)

}

@Override

public void focusGained(FocusEvent e) {

timer.stop();

}

@Override

public void focusLost(FocusEvent e) {

timer.restart();

}

private static class Ball{

int x,y;

boolean up,left;

Color color;

public Ball(int x, int y, Color color) {

this.x = x;

this.y = y;

this.color = color;

up = left = false;

}

}

}

这篇关于java弹弹球_Java实力弹弹球实现代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Java中StopWatch的使用示例详解

《Java中StopWatch的使用示例详解》stopWatch是org.springframework.util包下的一个工具类,使用它可直观的输出代码执行耗时,以及执行时间百分比,这篇文章主要介绍... 目录stopWatch 是org.springframework.util 包下的一个工具类,使用它

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

opencv图像处理之指纹验证的实现

《opencv图像处理之指纹验证的实现》本文主要介绍了opencv图像处理之指纹验证的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、简介二、具体案例实现1. 图像显示函数2. 指纹验证函数3. 主函数4、运行结果三、总结一、

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Springboot处理跨域的实现方式(附Demo)

《Springboot处理跨域的实现方式(附Demo)》:本文主要介绍Springboot处理跨域的实现方式(附Demo),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录Springboot处理跨域的方式1. 基本知识2. @CrossOrigin3. 全局跨域设置4.

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

基于SpringBoot实现文件秒传功能

《基于SpringBoot实现文件秒传功能》在开发Web应用时,文件上传是一个常见需求,然而,当用户需要上传大文件或相同文件多次时,会造成带宽浪费和服务器存储冗余,此时可以使用文件秒传技术通过识别重复... 目录前言文件秒传原理代码实现1. 创建项目基础结构2. 创建上传存储代码3. 创建Result类4.

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4