java画板源代码.doc

上传人:飞****2 文档编号:54375408 上传时间:2022-10-28 格式:DOC 页数:10 大小:58KB
返回 下载 相关 举报
java画板源代码.doc_第1页
第1页 / 共10页
java画板源代码.doc_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《java画板源代码.doc》由会员分享,可在线阅读,更多相关《java画板源代码.doc(10页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、程序运行结果预览:功能:实现了画笔、直线、椭圆、矩形、橡皮檫以及囊括所有颜色的选择。代码简单、有详细注释。package huaban;import java.awt.*;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.*;import javax.swing.*;import java.util.*;/* * * * author lenovo * * 1.需要注意一下 XOR * -setXOR- * -曲线本身函数- * -覆盖曲线函数- * *2.基本所有的Drag都是虚枉的 *-一般都是Relea

2、se()才是实在的 */public class huaban extends JFrame implements MouseListener,MouseMotionListener, AdjustmentListener, ItemListener JFrame frame =new JFrame();JPanel p1 = new JPanel(); / 按钮组区域JPanel p2 = new JPanel(); / 颜色组区域JPanel bottom = new JPanel();/ 画板组区域JPanel top = new JPanel();/ 顶部区域ImageIcon ico

3、n1 =new ImageIcon(srchuabanpicturec1.jpg);ImageIcon icon2 =new ImageIcon(srchuabanpicturec2.jpg);ImageIcon icon3 =new ImageIcon(srchuabanpicturec3.jpg);ImageIcon icon4 =new ImageIcon(srchuabanpicturec4.jpg);ImageIcon icon5 =new ImageIcon(srchuabanpicturec5.jpg);ImageIcon icon6 =new ImageIcon(srchuab

4、anpicturec6.jpg);ButtonGroup g = new ButtonGroup(); / 按钮组JRadioButton op1 = new JRadioButton(icon1, true); / 单选框JRadioButton op2 = new JRadioButton(icon2, false);JRadioButton op3 = new JRadioButton(icon3, false);JRadioButton op4 = new JRadioButton(icon4, false);JRadioButton op5 = new JRadioButton(ic

5、on5, false);JCheckBox op6 = new JCheckBox(icon6); / 复选框Color c = Color.black; / 设置画笔颜色,也是刚开始的默认颜色Color c1=Color.white; /设置按钮背景颜色int f = 1;int sx, sy, x, y; / 坐标记录boolean fill = false;boolean flag = false;JScrollBar r1 = new JScrollBar(JScrollBar.HORIZONTAL, 251, 4, 0, 255); / 横向滚动条,初始值,扩展大小,最小值,最大值J

6、ScrollBar g1 = new JScrollBar(JScrollBar.HORIZONTAL, 251, 4, 0, 255);JScrollBar b1 = new JScrollBar(JScrollBar.HORIZONTAL, 251, 4, 0, 255);public huaban() Image icon = Toolkit.getDefaultToolkit().getImage(srchuabanpicturec6.jpg); frame.setIconImage(icon);getContentPane().setLayout(new BorderLayout()

7、; / 边界布局bottom.setBackground(Color.white); / 设置画板背景颜色p1.setLayout(new FlowLayout(); / 按钮为流水布局p1.setBackground(Color.white); /设置背景颜色p2.setLayout(new GridLayout(1, 3); / 设置颜色滚动轴布局p2.add(r1);p2.add(g1);p2.add(b1); / 添加滚动轴r1.setBackground(Color.red); / 设置滚动轴颜色g1.setBackground(Color.green);b1.setBackgrou

8、nd(Color.blue);op1.setBackground(c1); /设置按钮背景颜色op2.setBackground(c1);op3.setBackground(c1);op4.setBackground(c1);op5.setBackground(c1);op6.setBackground(c1);g.add(op1); / 单选按钮组g.add(op2);g.add(op3);g.add(op4);g.add(op5); / 添加按钮进入面板p1p1.add(op1);p1.add(op2);p1.add(op3);p1.add(op4);p1.add(op5);p1.add(

9、op6);top.setLayout(new GridLayout(2, 1, 10, 5);top.add(p1);top.add(p2); / 顶部区域增加组建p1,p2op6.addItemListener(this); / 填充按钮增加监听器r1.addAdjustmentListener(this); / 红色 监听器g1.addAdjustmentListener(this); / 绿色 监听器b1.addAdjustmentListener(this); / 蓝色 监听器op1.addItemListener(this); / 图形选择 监听器op2.addItemListene

10、r(this);op3.addItemListener(this);op4.addItemListener(this);op5.addItemListener(this);bottom.addMouseListener(this); / 画板设置监听器bottom.addMouseMotionListener(this); / 画板设置监听器getContentPane().add(top, North);getContentPane().add(bottom, Center); / 这样设置可以实现画板随窗口大小变化而延伸this.setTitle(画板); / 标题this.setSize

11、(800, 500); / 大小this.setVisible(true); / 可见this.setLocationRelativeTo(null); / 居中this.setDefaultCloseOperation(3); / 随窗口关闭而关闭进程/* * mousePressed() 设置图形绘画起点 mouseReleased() 设置鼠标释放时候进行覆盖重画 mouseDragged() 也是画 * 画出的图跟用mouseReleased()画出来的 一样,只是更加体现过程。 */ 注册鼠标事件监听器public void mousePressed(MouseEvent e) fl

12、ag = false;sx = e.getX();sy = e.getY(); / 获取鼠标按下时的坐标public void mouseReleased(MouseEvent e) int x0, y0;Graphics g = bottom.getGraphics(); / 获取按钮事件switch (f) / 覆盖 重画case 2: / 直线 g.drawLine(sx,sy,x,y); x=e.getX(); y=e.getY(); g.setColor(c); g.drawLine(sx, sy, x, y); break;case 3:case 4:x = e.getX();y

13、= e.getY();x0 = x sx ? sx : x;y0 = y sy ? sy : y;g.setColor(c);if (!fill) if (f = 3)g.drawOval(x0, y0, Math.abs(x - sx), Math.abs(y - sy);elseg.drawRect(x0, y0, Math.abs(x - sx), Math.abs(y - sy);else if (f = 3)g.fillOval(x0, y0, Math.abs(x - sx), Math.abs(y - sy);elseg.fillRect(x0, y0, Math.abs(x -

14、 sx), Math.abs(y - sy);break;case 5:g.setColor(Color.white);x = e.getX();y = e.getY();x0 = x sx ? sx : x;y0 = y sy ? sy : y;g.fillRect(x0, y0, Math.abs(x - sx), Math.abs(y - sy);g.drawRect(x0, y0, Math.abs(x - sx), Math.abs(y - sy);break;public void mouseEntered(MouseEvent e) public void mouseExited

15、(MouseEvent e) public void mouseClicked(MouseEvent e) public void mouseMoved(MouseEvent e) /* * Dragged()都是最终不实现的,使用XOR 只展现过程曲线 * 最终都会小时,真正实现“画出来”的是Release() */public void mouseDragged(MouseEvent e) int x0, y0;Graphics g = bottom.getGraphics();switch (f) case 1: / 画任意线x = e.getX();y = e.getY();g.set

16、Color(c);g.drawLine(sx, sy, x, y);sx = x;sy = y;break;case 2:g.setColor(c);if (!flag) x = e.getX();y = e.getY();g.drawLine(sx, sy, x, y);flag = true;else / 实现重画 用白色的画笔重画所有的轨迹 也就是抹去拖拽过程中的痕迹/设置异或 进入绘图模式g.setXORMode(Color.white);g.drawLine(sx, sy, x, y);/ 开始覆盖x = e.getX();y = e.getY();g.drawLine(sx, sy

17、, x, y);break;case 3:case 4:g.setColor(c);if (!flag) x = e.getX();y = e.getY();x0 = x sx ? sx : x;y0 = y sy ? sy : y;if (!fill) if (f = 3)g.drawOval(x0, y0, Math.abs(x - sx), Math.abs(y - sy);elseg.drawRect(x0, y0, Math.abs(x - sx), Math.abs(y - sy);else if (f = 3)g.fillOval(x0, y0, Math.abs(x - sx)

18、, Math.abs(y - sy);elseg.fillRect(x0, y0, Math.abs(x - sx), Math.abs(y - sy);flag = true;else / 声明异或 进入绘图模式g.setXORMode(Color.white);x0 = x sx ? sx : x;y0 = y sy ? sy : y;/ 开始画if (!fill) if (f = 3)g.drawOval(x0, y0, Math.abs(x - sx), Math.abs(y - sy);elseg.drawRect(x0, y0, Math.abs(x - sx), Math.abs

19、(y - sy); else if (f = 3)g.fillOval(x0, y0, Math.abs(x - sx), Math.abs(y - sy);elseg.fillRect(x0, y0, Math.abs(x - sx), Math.abs(y - sy);/ 开始覆盖x = e.getX();y = e.getY();x0 = x sx ? sx : x;y0 = y sy ? sy : y;if (!fill) if (f = 3)g.drawOval(x0, y0, Math.abs(x - sx), Math.abs(y - sy);elseg.drawRect(x0,

20、 y0, Math.abs(x - sx), Math.abs(y - sy); else if (f = 3)g.fillOval(x0, y0, Math.abs(x - sx), Math.abs(y - sy);elseg.fillRect(x0, y0, Math.abs(x - sx), Math.abs(y - sy);break;case 5:g.setColor(c);if (!flag) x = e.getX();y = e.getY();x0 = x sx ? sx : x;y0 = y sy ? sy : y;g.drawRect(x0, y0, Math.abs(x

21、- sx), Math.abs(y - sy);flag = true;else/ 声明异或 进入绘图模式g.setXORMode(Color.white);x0 = x sx ? sx : x;y0 = y sy ? sy : y;/开始绘画g.drawRect(x0, y0, Math.abs(x - sx), Math.abs(y - sy);/ 开始覆盖x = e.getX();y = e.getY();x0 = x sx ? sx : x;y0 = y sy ? sy : y;g.drawRect(x0, y0, Math.abs(x - sx), Math.abs(y - sy);

22、break;public void adjustmentValueChanged(AdjustmentEvent e) / 滚动条可以产生AdjustmentEvent类代表的调整事件/ 当用户改变滑块位置时会产生调整事件./ Color(R,G,B)这个是一个调试颜色的函数/ getValue()是获取当前滚动轴的值c = new Color(r1.getValue(), g1.getValue(), b1.getValue();c1=new Color(r1.getValue(), g1.getValue(), b1.getValue();r1.setBackground(new Colo

23、r(r1.getValue(), 0, 0);g1.setBackground(new Color(0, g1.getValue(), 0);b1.setBackground(new Color(0, 0, b1.getValue();p1.setBackground(c);op1.setBackground(c1); /设置按钮背景颜色op2.setBackground(c1);op3.setBackground(c1);op4.setBackground(c1);op5.setBackground(c1);op6.setBackground(c1);public void itemStat

24、eChanged(ItemEvent e) /* * 选择事件事件源 当在单选按钮组中选择时会产生选择事件 当用户单击复选框改变它的选中状态时,会产生选择事件 */ instanceof 指出对象是否是特定类的一个实例 返回一个布尔值if (e.getItemSelectable()/* 获取事件源 */instanceof JCheckBox) JCheckBox temp = (JCheckBox) e.getItemSelectable(); / 强制转换fill = temp.isSelected(); / 判断复选框是否被选中 else / 单选框JRadioButton temp = (JRadioButton) e.getItemSelectable();if (temp = op1)f = 1; / 自由画else if (temp = op2)f = 2; / 直线else if (temp = op3)f = 3; / 椭圆else if (temp = op4)f = 4; / 矩形else if (temp = op5)f = 5; / 橡皮擦public static void main(String args) huaban mainFrame = new huaban();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com