JAVA————简单的图形绘制界面(教程)
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.2 简单的图形绘制教案 山西版...
<八年级信息技术 1.2 简单的图形绘制教案 山西版>由会员分享,可在线阅读,更多相关<八年级信息技术 1.2 简单的图形绘制教案 山西版(2页珍藏版)>请在人人文库网上搜索. ...
- autocad2007二维图画法_CAD二维图形绘制的教程
一般来说,大家使用CAD绘制的图形都是二维的,这些二维图形其实不难.接下来就是学习啦小编精心整理的一些关于CAD二维图形绘制的教程的相关资料,供你参考. CAD二维图形绘制的教程 1.绘图菜单绘图菜单 ...
- 【计算机图形学】用python的turtle进行简单的图形绘制
[计算机图形学]用python的turtle进行简单的图形绘制 python的turtle模块 绘制图形 绘制点 绘制直线 绘制椭圆 绘制六边形 绘制n次贝塞尔曲线 结语 python的turtle模 ...
- MFC简单自学图形绘制1
本节主要简单学习下绘制基本图形,并设置一个定时器,图形会随时间变化而变化. 效果就是上面这三个图形轮流变化. 首先新建一个MFC项目,选择单文档模式. 图像显示主要是在view类中操作的,所以下面所有 ...
- Java简单的用户登录界面+MySQL
1 概述 一个简单的Swing登录界面,使用了简单的JDBC. 如图: 2 UI 2.1 主界面 主界面使用了31网格布局+三个JPanel,中间的JPanel使用了22网格布局: import ja ...
- OpenCv Java 简单的图形轮廓绘制 (5)
初学Opencv实现一点点的功能都感觉很是吃力,所以不得不写点东西记忆一下,不然明天又忘记了 好记星不如烂笔头 我就想能不能处分出图片中的正方形和圆形,标记出来,我们这边就绘制器图像,下一步就是认识图 ...
- Python使用VTK三维3D图形绘制入门教程
安装:pip install vtk 学习一个东西最快的方法是知道基本原理和用途 VTK有啥用 不能做游戏.适合快速开发绘制静态三维模型.所以类似多用途折叠工具刀用处多,但是不能用在特别费劲的场合. ...
- python绘制3d动态模型_Python使用VTK三维3D图形绘制入门教程
安装:pip install vtk 学习一个东西最快的方法是知道基本原理和用途 VTK有啥用 不能做游戏.适合快速开发绘制静态三维模型.所以类似多用途折叠工具刀用处多,但是不能用在特别费劲的场合. ...
- 使用 UIBezierPath 进行简单的图形绘制
这篇文章介绍UIBezierPath的详细的使用, 以及一些细节! 创建一个XTBezierPath继承于UIView的类 使用drawRect 完成图形的绘制 在drawRect方法完成绘制 使用 ...
最新文章
- 刚发现 emacs的新的go-mode
- [转]NYOJ-511-移动小球
- LeetCode Decode Ways
- mqtt php 16进制数据,phpMQTT 内存耗死问题
- 利用linux的mtrace命令定位内存泄露(Memory Leak)
- 《STL源码剖析》笔记
- 应用:Xbox 360无线大屏幕控制器“WP 7”
- Web CAD SDK 14.1 Crack
- 2009年度优科豪马轮胎全国经销商会议在三亚召开
- matlab求极限趋近0,matlab求极限和导数
- 提取gps经纬度信息
- 燃烧的远征java(二)-开发环境:eclipse 的使用技巧收集
- R2DBC Unable to create a ConnectionFactory for ‘ConnectionFactoryOptions
- 网站优化怎样的外链能轻松收录,网站外链优化攻略
- 产业洞察 | 软件定义新IT,深信服为数字化转型架设新设施
- 当下知识付费行业趋势
- Kaggle教程 机器学习中级2 缺失值处理
- 免签出国,我们这些懒人的长假有救了
- AV1视频编码标准资源汇总 转载
- 收藏的一些不错的网站 实用工具 软件