使用java设计 绘图工具

一、步骤

  1. 新建一个包(package),在包中新建一个类DrawUI(class);

  1. 在DrawUI中引入一个方法showUI,接下来的设计就在这里面进行;

  1. 提前引入我们要用到的工具包;

  1. 新建一个绘图的窗体;

  1. 加上边界管理布局器BorderLayout(也可以加流式管理布局器java.awt.FlowLayout );

注:边界管理布局器可以实现画板与功能按键的分区

  1. 给窗体添加鼠标监听器;

  • 首先定义事件处理类DrawMouse重写MouseListener接口:

添加监听器一定要重写MouseListener中的所有方法

注1:这几个方法分别是点击,按压,释放,进入,退出(鼠标位置不变,按下鼠标为点击,鼠标位置改变,按下鼠标为按压)

注2:双击MouseListener右键点击openDeclaration即可查看所有方法

  • 然后在DrawUI中引入监听器

7.设置北区的功能区按键面板,背景色和大小可以任意设置;

注:北区面板的长是随着窗体的变化而变化,所以只需要设置宽度就可以。同理西区的宽度随着窗体的变化而变化,所以只需要设置长度就可以

8.继续设置绘画的面板,背景色和大小可以任意设置;

注:这里最好设计成中间区域的面板,这样除了刚刚设置的北区面板之外,其他区域就都是中间区域面板。

9.在中间面板绘画区域获取画笔;

10.开始设计画图程序(在DrawMouse中):

(1)画直线

运行效果:

(2)画矩形

运行效果:

但是这里能发现,这样的代码只能支持我们从左上角到右上角画,如果反过来矩形的位置就会偏移,如果想要达到像电脑自带的画图工具一样随意的画矩形,就需要找到坐标x和坐标y中的最小值,因为不管我们怎么画矩形,矩形左上角的坐标x,y值总是最小的,所以代码如下:

这样我们就可以实现往任意方向画矩形了

(3)画任意三角形

原理:先画一条线段,再取第三个点,让第三个点与线段两个端点连线

按照这个原理写出代码

但是发现运行的效果是这样的

这是因为第三次点击的时候,取的x3,y3点坐标把之前的点给覆盖住了,我们可以加上输出语句来显示取值验证一下

输出结果:

可以看到后来的(x1,y1),(x2,y2),(x3,y3)都是一样的

要解决这个问题就要设置标记flag,防止覆盖

在后面依次加上flag标记

运行效果:

二,改进

现在在程序里已经定义了画直线,矩形和三角形的程序,但却并不知道你想要画哪种图形,所以运行出来的效果是这样的

所以我们可以加入按钮来一一对应,这也是上面设置面板区域的原因,在北区功能区放置功能按钮,中间功能区作为画板

1.在北区面板上设置按钮

注:这里用的是创建数组的办法来新建按钮,这样方法更方便,避免代码繁琐。也可以用这种普通的方法来引入按钮,不过有几个按钮就要写几行这组代码。

2.在DrawMouse类中继续继承接口,一定要重写ActionListener中的所有方法(类可以继承多个接口)

引入name全局变量,让它获取按钮上的文字

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值