资源简介
1. 画板UI设计(总体布局)
(1)创建窗体并设置相关属性;
(2)给整个窗体添加一个中间容器用来覆盖整个窗体;
(3)设置边框布局,因为整个画板大致为左边部分,中间部分,菜单栏三个部分,用边框布局比较合适;
(4)给窗体添加左面板,中间面板;
(5)给左面板添加按钮,并设置按钮图片和效果;
(6)给左面板添加左子面板,用来存放颜色按钮;
2.画板功能设计
(1)给左画板中的按钮组中的每个按钮添加鼠标监听器;
(2)点击不同按钮,绘制不同的图形;
(3)给左子面板中的每个颜色按钮添加鼠标监听器;
(4)根据下面板中选中的颜色按钮,来获取按钮的背景颜色,并将该颜色设置成画笔的颜色;
(5)铅笔功能
1、铅笔是鼠标拖动时画的线,所需要实现鼠标移动监听器,我们采用一个类来实现多个接口;
2、添加新的鼠标监听器类;
3、在鼠标移动时间中实现画笔的逻辑(其实就是绘制直线,鼠标每移动一个像素,就会触发移动事件,通过移动事件获取鼠标的坐标,与上一次移动的坐标连线就可以了;
(6)刷子功能
刷子其实就是加粗的画笔,画出来的直线更粗,这里需要用到Graphic2D画笔来设置画笔的粗细。
(7)橡皮擦功能
橡皮擦就是把画笔颜色设置成相同的背景颜色就可以了,拖动鼠标时进行擦除,所以在鼠标拖动事件中编写。
(8)喷桶功能
1、定位方法:鼠标拖动事件实现;
2、随机数生成:Random;
3、实现原理,在鼠标拖动附近绘制很多的原点;
3. 画板的保存和重绘的设计
(1)给我们的画板添加菜单条、菜单以及菜单项
(2)给每个菜单项添加监听器
(3)点击不同的菜单项实现相应的功能
(4)图形保存功能:利用对象输出流,将容器对象写入文件;
(5)打开图形功能:利用对象输入流,将容器对象读入,然后将容器里面的图形对象在画板上绘制出来
(6)新建文件功能:新建文件,将画板上绘制的内容清空(清空之前可以确认是否需要进行保存)清屏(重绘)功能依次方法;
(7)文件保存格式为BMP格式;
(8)文字功能:读取文本框中的文本并打印到屏幕鼠标的相应的响应位置,传入输入的文字大小的参数,以此来改变文字的大小;
4.弹泡泡功能的设计
根据Java多线程来实现弹泡泡功能;泡泡的位置颜色随机出现,并且做到碰到边框会变色;
代码片段和文件信息
package com.picture;
import com.picture.com.ButtonListener;
import com.picture.com.DrawListener;
import java.awt.Graphics2D;
import java.awt.*;
import javax.swing.*;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.border.BevelBorder;
import java.util.ArrayList;
import java.lang.Exception;
import com.picture.com.com.com.com.Point;
import sun.font.EAttribute;
import java.awt.Desktop;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.UnsupportedLookAndFeelException;
public class Imageframe extends Jframe{
//声明颜色属性,并赋默认值
public Color c=Color.RED;
//按钮属性
public static JTextField textField;
public static JTextField textField1;
public JButton bt ;
public JPanel panelcenter;
public Graphics2D g;
ArrayList list = new ArrayList();//容器
public void initframe() throws Exception{
//设置窗体相关属性
this.setSize(700600);
this.settitle(“图 画 板“);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
//把添加菜单作为一个方法封装起来
addMenu();
//窗体添加主面板
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
this.add(panel);
panelcenter = new JPanel(){
public void paint(Graphics g1) {
g=(Graphics2D)g1;
super.paint(g);
for (int i = 0; i Point point =(Point) list.get(i);
point.Draw(g);
}
}
};
panelcenter.setBackground(Color.white);
panel.add(panelcenter);
//主面板添加左面板
JPanel panelleft = new JPanel();
panelleft.setPreferredSize(new Dimension(500));
panelleft.setLayout(new FlowLayout(FlowLayout.LEFT00));
panelleft.setBackground(new Color(235233238));
panel.add(panelleftBorderLayout.WEST);
//面板中添加按钮
ButtonGroup bg = new ButtonGroup();//画板中的按钮统一管理,互相排斥,保证只能选择一个按钮
for(int i=0;i<15;i++) {
JRadioButton jrb = new JRadioButton();
//给按钮添加图片
//按钮设置
if (i != 0 && i != 1 && i != 4 && i != 5 && i != 9 && i != 11 && i != 13) {
String str1 = “/draw“ + i + “.jpg“;
String str2 = “/draw“ + i + “-1.jpg“;
String str3 = “/draw“ + i + “-2.jpg“;
String str4 = “/draw“ + i + “-3.jpg“;
ImageIcon img1 = new ImageIcon(this.getClass().getResource(str1));
ImageIcon img2 = new ImageIcon(this.getClass().getResource(str2));
ImageIcon img3 = new ImageIcon(this.getClass().getResource(str3));
ImageIcon img4 = new ImageIcon(this.getClass().getResource(str4));
jrb.setIcon(img1);//默认图片
jrb.setRolloverIcon(img2);//鼠标停留在按钮上显示的图片
jrb.setPressedIcon(img3);//鼠标按下按钮显示的图片
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 116197 2017-09-01 13:12 Java画板\emmmmm.jar
文件 186524 2017-09-01 21:53 Java画板\Java画图板技术报告.docx
文件 511 2017-08-31 16:32 Java画板\画板\emmmmm.iml
文件 97 2017-08-18 16:30 Java画板\画板\.idea\desc
文件 499 2017-08-18 16:30 Java画板\画板\.idea\misc.xm
文件 279 2017-08-18 16:33 Java画板\画板\.idea\modules.xm
文件 91 2017-08-18 16:30 Java画板\画板\.idea\project-template.xm
文件 51691 2017-09-01 13:13 Java画板\画板\.idea\workspace.xm
文件 8792 2017-09-01 11:14 Java画板\画板\.idea\uiDesigner.xm
文件 564 2017-09-01 13:12 Java画板\画板\.idea\artifacts\emmmmm_jar.xm
文件 61231 2017-08-31 17:00 Java画板\画板\images\Ball.gif
文件 356 2016-11-09 20:44 Java画板\画板\images\cursorPen.gif
文件 611 2016-11-09 20:44 Java画板\画板\images\cursorPen.png
文件 607 2016-11-09 20:44 Java画板\画板\images\draw10-1.jpg
文件 601 2016-11-09 20:44 Java画板\画板\images\draw10-2.jpg
文件 628 2016-11-09 20:44 Java画板\画板\images\draw10-3.jpg
文件 522 2016-11-09 20:44 Java画板\画板\images\draw10.jpg
文件 571 2016-11-09 20:44 Java画板\画板\images\draw12-1.jpg
文件 597 2016-11-09 20:44 Java画板\画板\images\draw12-2.jpg
文件 575 2016-11-09 20:44 Java画板\画板\images\draw12-3.jpg
文件 542 2016-11-09 20:44 Java画板\画板\images\draw12.jpg
文件 606 2016-11-09 20:44 Java画板\画板\images\draw14-1.jpg
文件 653 2016-11-09 20:44 Java画板\画板\images\draw14-2.jpg
文件 671 2016-11-09 20:44 Java画板\画板\images\draw14-3.jpg
文件 507 2016-11-09 20:44 Java画板\画板\images\draw14.jpg
文件 787 2016-11-09 20:44 Java画板\画板\images\draw2-1.jpg
文件 729 2016-11-09 20:44 Java画板\画板\images\draw2-2.jpg
文件 783 2016-11-09 20:44 Java画板\画板\images\draw2-3.jpg
文件 9489 2016-11-09 20:44 Java画板\画板\images\draw2.jpg
文件 784 2016-11-09 20:44 Java画板\画板\images\draw3-1.jpg
............此处省略151个文件信息
相关资源
- mysql-connector-java-5.1.40-bin.jar连接器
- java实现学生管理系统控制台
- Java实现-生成带参的小程序二维码
- JAVA 像素鸟游戏
- java超市收银系统
- java百度OCR文字识别名片信息补充
- java数据库编程,对数据库的一系列操
- 纯JavaSwing界面,小型人才资源管理系
- ValidateCode.jar包含用法,Java生成图片验
- 网络调试助手NetAssistjava socket通讯代码
- SMS4国密封装接口直接可用java.zip
- JSP + MySQL+Servlet+JavaBean 实现图片上传
- Mateix3x3f.java矩阵的Java实现
- Java投票系统
- 基于Java实现的socket即时通信系统
- 程序设计外文资料
- JavawebMVC模式用户登录程序源码
- 学生成绩管理系统java+mysql
- flappy birdjava版
- html5做超级玛丽游戏(儿时的回忆
- mysql-connector-java-3.1.12-bin.jar
- 基于java scoket的聊天工具开题报告
- 基于Java的医院分诊管理系统
- Java转C++代码工具 J2C
- JAVA期末考试试题
- jsp+javabean实现的简单的购物车 删除
- AESjava实现
- 用java编写的多边形扫描填充算法,有
- java二分查法
- Java根据实体创建Mysql数据库表
评论
共有 条评论