JAVA————简单的图形绘制界面
我们先要清楚,绘制界面需要什么东西。
1.需要一个窗体来显示我们的界面。
2.需要一个组件(画笔)来让我们绘制图形。
3.需要监听来判断我们选择的画笔以及鼠标对画布的操作。

关于绘制图形,就需要介绍一下java里的包了。
第一个是javax.swing.*
里面包含了按钮JButton这样的类,可以理解为,显示到界面上的东西,这个包里大部分都有。
第二个是java.awt.*
里面有和图形相关的内容,比如颜色形状等等。

ok,那么,让我们来做第一步,设计界面。

Xian.java

import java.awt.*;
import javax.swing.*;public class Xian{//主函数
public static void main(String[] args) {//类创建一个对象,让对象调用这个UI()界面方法来显示。Xian L = new Xian();L.UI();
}
public void UI() {//窗口设置JFrame window = new JFrame();window.setTitle("画图");window.setSize(400,500);//退出程序window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//创建流式布局,缩放界面时,里面的组件也会随之变化FlowLayout flow = new FlowLayout();//让窗口应用布局window.setLayout(flow);//Jbutton按钮组件,创建按钮JButton Xiantiao = new JButton("线条");JButton Juxing = new JButton("矩形");JButton Tuoyuan = new JButton("椭圆");//添加按钮到窗口上window.add(Xiantiao);window.add(Juxing);window.add(Tuoyuan);//尽量放在后面,以免有东西是不是显现不出来。,,还有就是要放在可视化获取之前。window.setVisible(true);//可视化获取    这里会将画笔b传给监听器,请放到setVisible之后,不然会报错。Graphics b = window.getGraphics();//创建监听器DrawListener hua = new DrawListener();//将监听器添加到窗口window.addMouseListener(hua);//传递Graphics引用 到监听器中hua.b = b;//一个监听器可以监听多个组件,如果创建几个新的监听器,他们之中的方法,是各自分开的//就比如之前我创建了3个监听器来监听三个按钮,他们之中的btt(自己定义的按钮上获得的字符串)是各自分开的,与上方监听的窗口的监听器无关。//给按钮加上监听Xiantiao.addActionListener(hua);Juxing.addActionListener(hua);Tuoyuan.addActionListener(hua);}
}

详细都写在注释里,这里就不多写了。

说一个题外话
很多东西的创建、调用方法,格式基本都是

 类的名字 自己创建的对象名字 = new 类的名字();对象的名字.方法名();

()里填写什么,都是由这个类的构造器来决定。详细参考之前的类和对象

界面设置好了之后,我们来设置监听的内容。
java.awt.event.*
这个里面的东西基本包括了鼠标监听和键盘监听。

DrawListener.java

import java.awt.Graphics;
import java.awt.event.*;public  class DrawListener implements MouseListener,ActionListener{int x1,y1,x2,y2;//储存起始坐标和最终坐标String btt;     //为了储存按钮上的名字//Xian.java中的画布b传过来。Graphics b;  //点击监听public void mouseClicked(MouseEvent e) {System.out.println("点击");}//鼠标按下状态的监听,按下获取第一个点的坐标public void mousePressed(MouseEvent e) {System.out.println("按下");x1 = e.getX();y1 = e.getY();}//按钮处理事件public void actionPerformed(ActionEvent e) {//这一串会输出按钮上的信息btt = e.getActionCommand();System.out.println(btt);}//释放鼠标键的监听,再次获取结束坐标。public void mouseReleased(MouseEvent e) {System.out.println("释放");x2 = e.getX();y2 = e.getY();//画直线,如果获取到的btt是“线条”if("线条".equals(btt)) {b.drawLine(x1, y1, x2, y2);}/       矩形        //  取坐标最小值     ///取宽高绝对值///为什么?因为从左上角开始画。//画矩形,如果获取到的btt是“矩形”if("矩形".equals(btt)) {b.drawRect(Math.min(x1, x2), Math.min(y1, y2), Math.abs(x2-x1), Math.abs(y2-y1));}//椭圆if("椭圆".equals(btt)) {b.drawOval(Math.min(x1, x2),Math.min(y1,y2),Math.abs(x2-x1),Math.abs(y2-y1));}else {return;}}//鼠标进入窗口的监听public void mouseEntered(MouseEvent e) {System.out.println("进入");}//鼠标离开窗口的监听public void mouseExited(MouseEvent e) {System.out.println("离开");}}

这里需要注意两点:
1.我使用的是接口implements 来接入的MouseListener,ActionListener这两个监听类,所以,下面我需要把他全部的方法都写进程序里。
MouseListener里会监听 : 点击、按下、释放、进入、移出
ActionListener监听点击按钮。

可以不使用我写的输出语句。这些只是当初我练习监听时候测试效果用的。

2.关于矩形和圆形使用最小值、绝对值。
因为关于这两个方法,他原本的设计是从左上角开始绘制,如果不使用绝对值,是无法反方向绘制的。

这只实现了直线、矩形、圆的绘制,还可以增添其他图形、颜色等等。其余的各种功能,还请多加创造。

JAVA————简单的图形绘制界面(教程)相关推荐

  1. 山西计算机信息技术八年级教案,八年级信息技术 1.2 简单的图形绘制教案 山西版...

    <八年级信息技术 1.2 简单的图形绘制教案 山西版>由会员分享,可在线阅读,更多相关<八年级信息技术 1.2 简单的图形绘制教案 山西版(2页珍藏版)>请在人人文库网上搜索. ...

  2. autocad2007二维图画法_CAD二维图形绘制的教程

    一般来说,大家使用CAD绘制的图形都是二维的,这些二维图形其实不难.接下来就是学习啦小编精心整理的一些关于CAD二维图形绘制的教程的相关资料,供你参考. CAD二维图形绘制的教程 1.绘图菜单绘图菜单 ...

  3. 【计算机图形学】用python的turtle进行简单的图形绘制

    [计算机图形学]用python的turtle进行简单的图形绘制 python的turtle模块 绘制图形 绘制点 绘制直线 绘制椭圆 绘制六边形 绘制n次贝塞尔曲线 结语 python的turtle模 ...

  4. MFC简单自学图形绘制1

    本节主要简单学习下绘制基本图形,并设置一个定时器,图形会随时间变化而变化. 效果就是上面这三个图形轮流变化. 首先新建一个MFC项目,选择单文档模式. 图像显示主要是在view类中操作的,所以下面所有 ...

  5. Java简单的用户登录界面+MySQL

    1 概述 一个简单的Swing登录界面,使用了简单的JDBC. 如图: 2 UI 2.1 主界面 主界面使用了31网格布局+三个JPanel,中间的JPanel使用了22网格布局: import ja ...

  6. OpenCv Java 简单的图形轮廓绘制 (5)

    初学Opencv实现一点点的功能都感觉很是吃力,所以不得不写点东西记忆一下,不然明天又忘记了 好记星不如烂笔头 我就想能不能处分出图片中的正方形和圆形,标记出来,我们这边就绘制器图像,下一步就是认识图 ...

  7. Python使用VTK三维3D图形绘制入门教程

    安装:pip install vtk 学习一个东西最快的方法是知道基本原理和用途 VTK有啥用 不能做游戏.适合快速开发绘制静态三维模型.所以类似多用途折叠工具刀用处多,但是不能用在特别费劲的场合. ...

  8. python绘制3d动态模型_Python使用VTK三维3D图形绘制入门教程

    安装:pip install vtk 学习一个东西最快的方法是知道基本原理和用途 VTK有啥用 不能做游戏.适合快速开发绘制静态三维模型.所以类似多用途折叠工具刀用处多,但是不能用在特别费劲的场合. ...

  9. 使用 UIBezierPath 进行简单的图形绘制

    这篇文章介绍UIBezierPath的详细的使用, 以及一些细节! 创建一个XTBezierPath继承于UIView的类 使用drawRect 完成图形的绘制 在drawRect方法完成绘制 使用  ...

最新文章

  1. 刚发现 emacs的新的go-mode
  2. [转]NYOJ-511-移动小球
  3. LeetCode Decode Ways
  4. mqtt php 16进制数据,phpMQTT 内存耗死问题
  5. 利用linux的mtrace命令定位内存泄露(Memory Leak)
  6. 《STL源码剖析》笔记
  7. 应用:Xbox 360无线大屏幕控制器“WP 7”
  8. Web CAD SDK 14.1 Crack
  9. 2009年度优科豪马轮胎全国经销商会议在三亚召开
  10. matlab求极限趋近0,matlab求极限和导数
  11. 提取gps经纬度信息
  12. 燃烧的远征java(二)-开发环境:eclipse 的使用技巧收集
  13. R2DBC Unable to create a ConnectionFactory for ‘ConnectionFactoryOptions
  14. 网站优化怎样的外链能轻松收录,网站外链优化攻略
  15. 产业洞察 | 软件定义新IT,深信服为数字化转型架设新设施
  16. 当下知识付费行业趋势
  17. Kaggle教程 机器学习中级2 缺失值处理
  18. 免签出国,我们这些懒人的长假有救了
  19. AV1视频编码标准资源汇总 转载
  20. 收藏的一些不错的网站 实用工具 软件

热门文章

  1. 21天Python进阶学习挑战赛打卡------第2天(基础内容)
  2. ant design 预览图片_Ant Design Pro上传图片
  3. miss工作室官宣加盟新公司是真的吗
  4. FFplay文档解读-31-视频过滤器六
  5. 【uniapp】 uni-app使用getPhoneNumber接口
  6. 脱水马铃薯的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. pytorch中的膨胀卷积
  8. Android仿抖音加载框之两颗小球转动控件
  9. 2.3.2 合并(拼接)字符串
  10. 面试如何巧妙总结自己的缺点和不足之处呢