用java线程绘制图案_用Java实现多线程画图

本文介绍了如何使用Java实现多线程来绘制图形。通过创建一个JFrame窗口,添加自定义的鼠标监听器,记录鼠标点击位置,并使用Graphics对象在指定坐标上绘制圆。在鼠标释放事件中,启动新的线程,不断移动并填充圆,实现动态画图效果。
摘要由CSDN通过智能技术生成

用Java实现多线程画图

目录

功能分析

初步实现

添加监听器

创建多线程

实现多线程画图

1,功能分析

这个程序的基本思路就是:展示一个JFrame界面,给JFrame添加我们自己实现的鼠标事件监听器,记录鼠标事件点击时鼠标所在坐标;JFrame类提供了一个getGraphics()方法可以得到java.awt.Graphics对象,Graphics可以理解为“画布”对象,通过调用Graphics对象不同的Draw方法并传入鼠标的坐标参数,就可以在JFrame界面上画出相应的图形;最后,利用Runnable接口为程序添加多线程。

2,初步实现

package 画球;

import java.awt.Graphics;

import javax.swing.*;

public class Draw {

public static void main(String[] args) {

Draw d = new Draw();

d.showUI();

}

public void showUI(){

JFrame jf = new JFrame();

jf.setTitle("画板");

jf.setSize(800, 500);

jf.setResizable(false);

jf.setDefaultCloseOperation(3);

jf.setVisible(true);

Graphics g = jf.getGraphics();

}

}

3,添加监听器

创建一个新的类DrawListener用于写监听器,这里用的是鼠标事件监听器,可以在查看鼠标事件监听器的声明

b3b6fbd0ed23811843296d1233f872c3.png我们这里重写鼠标事件监听器的mouseReased方法,当鼠标松开时,在当前位置画一个圆。

package 画球;

import java.awt.Graphics;

import java.awt.event.MouseEvent;

import java.awt.event.MouseListener;

import javax.swing.JFrame;

public class DrawListener implements MouseListener{

public int x1,x2,y1,y2;

public int pre=0,now=1;

private Graphics g;

public boolean f = false;

public DrawListener(Graphics g){

this.g = g;

}

public void mouseClicked(MouseEvent e){

}

public void mousePressed(MouseEvent e){

}

public void mouseReleased(MouseEvent e){

x1 = e.getX();

y1 = e.getY();

g.fillOval(x1-25, y1-25, 50, 50);

}

public void mouseEntered(MouseEvent e){

}

public void mouseExited(MouseEvent e){

}

}

4,创建多线程

需要注意的是要将Graphics和坐标传进来

package 画球;

import java.awt.Graphics;

public class Run implements Runnable {

private Graphics g;

public int x1, y1;

public Run(Graphics g, int x1, int y1) {

this.g = g;

this.x1 = x1;

this.y1 = y1;

}

public void run() {

int i = 0;

while (true) {

g.fillOval(x1 - 25 + i, y1 - 25, 50, 50);

try {

Thread.sleep(40);

} catch (InterruptedException e1) {

e1.printStackTrace();

}

i++;

}

}

}

最后在监听器的mouseReased方法中创建多线程并在主程序中添加监听器

Run r = new Run(g,x1,y1);

new Thread(r,"1").start();

DrawListener dl = new DrawListener(g);

jf.addMouseListener(dl);

5,实现多线程画图

运行程序

81dab532f656e04661ff892f798ba2dc.png

随便点击几个点,出现同时运行的线程

bae9d1117c652860b415b62e0f53e7cc.png

3754dfe96a3aa158070a9900f8f303cc.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值