java实现画直线画圆_java 用鼠标画直线,圆,矩形的共存问题
发布日期:2021-10-30 21:00:36 浏览次数:1 分类:技术文章

本文共 2329 字,大约阅读时间需要 7 分钟。

已结贴√

问题点数:20 回复次数:3

ca56232b3bbedf9a539d07f37fffb99a.gif

3144d8b7615c79d9f638db40d5689d26.gif

a218af6549b45ee526caf607ebff1358.gif

0f8df0e29816ae721419de940fb833d1.gif

java 用鼠标画直线,圆,矩形的共存问题

再窗口上切换图形的时候,已经画好的图形也随之转换过来。

没有能够达到3种图形共存。怎么修改比较好呢?

就是想画直线的时候出直线,想画圆的时候出圆,但它们彼此共存再窗口上。

-------------------------------------

import java.awt.*;

import java.awt.geom.*;

import javax.swing.*;

import java.awt.event.*;

import java.util.*;

public class Test{

public static void main(String[] args){

MyFrame frame = new MyFrame();

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setVisible(true);

}

}

class MyFrame extends JFrame implements ActionListener{

MyPanel panel = new MyPanel();

JToolBar t;

JButton obj1;

JButton obj2;

JButton obj3;

public MyFrame(){

obj1 = new JButton("Line");

obj2 = new JButton("yuan");

obj3 = new JButton("juxing");

t = new JToolBar();

obj1.addActionListener(this);

obj2.addActionListener(this);

obj3.addActionListener(this);

t = new JToolBar();

t.add(obj1);

t.add(obj2);

t.add(obj3);

setTitle("DrawTest");

setSize(W,H);

Container contentPane = getContentPane();

contentPane.add(t,BorderLayout.NORTH);

contentPane.add(panel,BorderLayout.CENTER);

}

public void actionPerformed(ActionEvent e){

if(e.getSource()==obj1)

panel.shape=0;//直線

if(e.getSource()==obj2)

panel.shape=1;//円

if(e.getSource()==obj3)

panel.shape=2;//長方形

}

public static final int W = 400;

public static final int H = 400;

}

class MyPanel extends JPanel implements MouseListener{

private ArrayList pointList = new ArrayList();

int shape = -1;

int x1 = 0,y1 = 0;

int x2 = 0,y2 = 0;

MyPanel(){

addMouseListener(this);

}

public void mousePressed(MouseEvent e){

x1 = e.getX();

y1 = e.getY();

pointList.add(new Point(x1,y1));

}

public void mouseReleased(MouseEvent e){

x2 = e.getX();

y2 = e.getY();

pointList.add(new Point(x2,y2));

repaint();

}

public void mouseClicked(MouseEvent e){

}

public void mouseMoved(MouseEvent e){

}

public void mouseEntered(MouseEvent e){

}

public void mouseExited(MouseEvent e){

}

public void paintComponent(Graphics g){

super.paintComponent(g);

for(int i =0 ;i

Point p1 = pointList.get(i);

Point p2 = pointList.get(i+1);

switch(shape){

case 0:

g.drawLine(p1.x,p1.y,p2.x,p2.y);

break;

case 1:

int width1  = p2.x - p1.x;

int height1 = p2.y - p1.y;

g.drawOval(p1.x,p1.y,width1,height1);

break;

case 2:

int width2  = p2.x - p1.x;

int height2 = p2.y - p1.y;

g.drawRect(p1.x,p1.y,width2,height2);

break;

default:

System.out.println("please once again!");

break;

}

}

}

}

转载地址:https://blog.csdn.net/weixin_39861823/article/details/114689444 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java设置word页面为A3_word页面怎么设置为A3打印格式
下一篇:java怎样下载maven资源库_java-通过Maven下载本地存储库jar依赖文件

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年03月25日 04时47分01秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

从右边开始放_停路边,被人恶意放钉子,爆胎,报警无果,要我找监控 2019-04-21
读写测试_UFS 3.0读写测试数据曝光:秒杀UFS 2.1和eMMC 2019-04-21
注册小程序要多少钱_开发一个微信小程序商城要多少钱? 2019-04-21
mysql 实现id自增序列_MySQL分表自增ID解决方案 2019-04-21
catti二级笔译综合能力真题_CATTI韩语二级口译真题及考场回忆版 2019-04-21
攻防世界 适合做桌面_世界杯大冷门,双方实力悬殊,德国队为何输给了韩国队... 2019-04-21
可涂抹什么让指纹加深_手机镀膜是什么?液体玻璃手机镀膜和膜结手机纳米防护的区别... 2019-04-21
node静态服务器优缺点_Node —— BFF 2019-04-21
新风系统风速推荐表_PE管还是PVC管?现场评测新风系统两种管道对比 2019-04-21
华为社招嵌入式软件面试_嵌入式软件面试那点事 2019-04-21
心电图多少为正常范围_一个人的正常尿酸是多少,不管体重多少,不超过这个范围都算正常... 2019-04-21
两个集合相等的例题_人教A版高中数学必修一1.1.集合间的基本关系优质课公开课课件、教案... 2019-04-21
用流密码实现加密java语言_使用java的流密码 2019-04-21
合唱队形java_动态规划之合唱队形问题 2019-04-21
java变量怎么进行百分比_在Java中显示百分比 2019-04-21
java 设置pdf页面大小_Java PDF页面设置——页面大小、页边距、纸张方向、页面旋转... 2019-04-21
cmd mysql 数据分析_小白学数据分析--与MySQL有关的小知识 2019-04-21
java完成九宫格数独_简单实现java数独游戏 2019-04-21
php 安装zip,php7.4安装zip扩展 2019-04-21
php7 gitbook,php7性能分析扩展工具xhprof 2019-04-21