一个简单的画图板程序。
用到的图片在附件中。(新手,多包涵)
package netjava0626; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionAdapter; import java.awt.event.MouseMotionListener; //定义一个画板类 public class DrawingBoard { private String biaozhi = "huabi"; private String color; private Graphics g; private int x1, y1, x2, y2, x3, y3, w, h; private JLabel lab; // 初始化面板并实现组建 public void show() { JFrame frame = new JFrame(); // 创建一个工具栏 JButton but01 = new JButton("文件(F)"); JButton but02 = new JButton("编辑(E)"); JButton but03 = new JButton("查看(V)"); JButton but04 = new JButton("图像(I)"); JButton but05 = new JButton("颜色(C)"); JButton but06 = new JButton("帮助(H)"); JToolBar bar = new JToolBar(); bar.add(but01); bar.add(but02); bar.add(but03); bar.add(but04); bar.add(but05); bar.add(but06); frame.add(bar, BorderLayout.NORTH); //创建颜色框的监听器 ActionListener a3 = new ActionListener(){ public void actionPerformed(ActionEvent e) { //设置颜色 color = e.getActionCommand(); if(color.equals("Color.black") ){ g.setColor(Color.black); lab.setBackground(Color.black); }else if(color.equals("Color.gray")){ g.setColor(Color.gray); lab.setBackground(Color.gray); }else if(color.equals("Color.darkGray")){ g.setColor(Color.darkGray); lab.setBackground(Color.darkGray); }else if(color.equals("Color.green")){ g.setColor(Color.green); lab.setBackground(Color.green); }else if(color.equals("Color.LIGHT_GRAY")){ g.setColor(Color.LIGHT_GRAY); lab.setBackground(Color.LIGHT_GRAY); }else if(color.equals("Color.magenta")){ g.setColor(Color.magenta); lab.setBackground(Color.magenta); }else if(color.equals("Color.orange")){ g.setColor(Color.orange); lab.setBackground(Color.orange); }else if(color.equals("Color.pink")){ g.setColor(Color.pink); lab.setBackground(Color.pink); }else if(color.equals("Color.red")){ g.setColor(Color.red); lab.setBackground(Color.red); }else if(color.equals("Color.white")){ g.setColor(Color.white); lab.setBackground(Color.white); } } }; // 创建监听器 ActionListener al = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { biaozhi = e.getActionCommand(); } }; // 创建工具面板 JPanel panel01 = new JPanel(); panel01.setPreferredSize(new Dimension(60, 104)); String[] arr = { "duobianxing", "Xjuxing", "ca", "tianchong", "dianbi", "fangdajing", "huabi", "shuazi", "youqitong", "bianji", "zhixian", "quxian", "juxing", "shouwei", "tuoyuan", "yuanji" }; for (int i = 0; i < arr.length; i++) { ImageIcon img = new ImageIcon("DrawImages/" + arr[i] + ".jpg"); JButton but = new JButton(img); but.setActionCommand(arr[i]); but.addActionListener(al); but.setPreferredSize(new Dimension(24, 22)); panel01.add(but); } frame.add(panel01, BorderLayout.WEST); // 颜色选项栏 JPanel panel02 = new JPanel(); panel02.setPreferredSize(new Dimension(100, 50)); panel02.setLayout(null); JPanel panel04 = new JPanel(); panel04.setPreferredSize(new Dimension(100, 40)); // panel04.setBackground(Color.white ); panel04.setLayout(new GridLayout(2, 5)); Color [] arr02={Color.black,Color.gray,Color.darkGray,Color.green,Color.LIGHT_GRAY,Color.magenta, Color.orange,Color.pink,Color.red,Color.white}; String[] arr01 = {"Color.black","Color.gray","Color.darkGray","Color.green","Color.LIGHT_GRAY","Color.magenta", "Color.orange","Color.pink","Color.red","Color.white"}; lab = new JLabel(); lab.setPreferredSize(new Dimension()); lab.setOpaque(true); lab.setBackground(Color.black); lab.setBounds(60, 0, 47, 50); for (int i = 0; i < arr02.length; i++) { JButton but = new JButton(); but.setBackground(arr02[i]); but.setActionCommand(arr01[i]); but.setPreferredSize(new Dimension(16, 16)); but.addActionListener(a3); panel04.add(but); } panel02.add(lab); panel04.setBounds(107, 0, 100, 50); panel02.add(panel04); frame.add(panel02, BorderLayout.SOUTH); // 画布 JPanel panel03 = new JPanel(); panel03.setPreferredSize(new Dimension(694, 400)); panel03.setBackground(Color.WHITE); frame.add(panel03, BorderLayout.CENTER); frame.setTitle("画图板"); frame.setSize(754, 508); frame.setResizable(false); frame.setLocationRelativeTo(null); frame.setDefaultCloseOperation(3); MouseListener a1 = new MouseAdapter() { // 鼠標按下時獲得坐标 public void mousePressed(MouseEvent e) { x1 = e.getX(); y1 = e.getY(); } // 鼠标松开时获取坐标 public void mouseReleased(MouseEvent e) { x2 = e.getX(); y2 = e.getY(); if (biaozhi.equals("shouwei")) { g.drawLine(x1, y1, x1, y1); } else if (biaozhi.equals("dianbi")) { } else if (biaozhi.equals("zhixian")) { g.drawLine(x1, y1, x2, y2); } else if (biaozhi.equals("juxing")) { if (x2 > x1 && y2 > y1) { x3 = x1; y3 = y1; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawRect(x3, y3, w, h); } else if (x2 > x1 && y2 < y1) { x3 = x1; y3 = y2; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawRect(x3, y3, w, h); } else if (x2 < x1 && y2 < y1) { x3 = x2; y3 = y2; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawRect(x3, y3, w, h); } else { x3 = x2; y3 = y1; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawRect(x3, y3, w, h); } } else if (biaozhi.equals("tuoyuan")) { if (x2 > x1 && y2 > y1) { x3 = x1; y3 = y1; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawOval(x3, y3, w, h); } else if (x2 > x1 && y2 < y1) { x3 = x1; y3 = y2; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawOval(x3, y3, w, h); } else if (x2 < x1 && y2 < y1) { x3 = x2; y3 = y2; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawOval(x3, y3, w, h); } else { x3 = x2; y3 = y1; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawOval(x3, y3, w, h); } } else if (biaozhi.equals("yuanji")) { if (x2 > x1 && y2 > y1) { x3 = x1; y3 = y1; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawRoundRect(x3, y3, w, h, 20, 20); } else if (x2 > x1 && y2 < y1) { x3 = x1; y3 = y2; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawRoundRect(x3, y3, w, h, 20, 20); } else if (x2 < x1 && y2 < y1) { x3 = x2; y3 = y2; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawRoundRect(x3, y3, w, h, 20, 20); } else { x3 = x2; y3 = y1; w = Math.abs(x2 - x1); h = Math.abs(y2 - y1); g.drawRoundRect(x3, y3, w, h, 20, 20); } } } }; // 添加拖動時的方法 MouseMotionListener a2 = new MouseMotionAdapter() { public void mouseDragged(MouseEvent e) { x3 = e.getX(); y3 = e.getY(); // 当鼠标在拖动时也要注意对坐标的赋值 if (biaozhi.equals("huabi")) { g.drawLine(x1, y1, x3, y3); x1 = x3; y1 = y3; } else if (biaozhi.equals("ca")) { g.setColor(Color.white); g.fillRect(x1, y1, 10, 20); x1 = x3; y1 = y3; g.setColor(Color.black); } else if (biaozhi.equals("shuazi")) { g.fillRect(x1, y1, 5, 5); x1 = x3; y1 = y3; } else if (biaozhi.equals("youqitong")) { for (int i = 0; i < 20; i++) { int j = (int) (Math.random() * 10); int k = (int) (Math.random() * 10); g.drawLine(x3 + j, y3 + k, x3 + j, y3 + k); } } } }; panel03.addMouseListener(a1); panel03.addMouseMotionListener(a2); frame.setVisible(true); g = panel03.getGraphics(); } public static void main(String[] args) { DrawingBoard draw = new DrawingBoard(); draw.show(); } }
相关推荐
在Java编程语言中,实现一个简单的Windows画图板是一个经典的练习,它可以帮助初学者更好地理解图形用户界面(GUI)的设计以及事件处理机制。这个项目通常会涉及到Java的Swing库,这是一个用于创建桌面应用程序的GUI...
画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码...
这个"基于qt实现的画图板"项目提供了一个基础的图形用户界面(GUI)应用,让用户能够进行基本的绘画操作,比如选择画笔、填充颜色、打开和保存图像。以下是关于这个项目的一些关键知识点和相关技术的详细解释: 1. ...
Java 画图板程序设计与实现 Java 画图板是使用 Java 语言编写的图形绘制程序,提供了基本的绘图功能,如画笔、直线、椭圆、矩形等,用户可以使用该程序绘制简单的图形。下面我们将对 Java 画图板程序进行详细的分析...
《Windows画图板:探索动态画图的魅力》 Windows画图板,作为一款简单易用的图形编辑软件,是微软操作系统内置的一个基础工具,尤其适合初学者和儿童进行简单的绘图活动。它提供了丰富的基本画图功能,让用户能够...
《VC++实现的简易画图板程序解析》 在计算机编程领域,开发一款类似Windows画图板的小程序是一项常见的实践项目,它可以帮助初学者更好地理解图形用户界面(GUI)编程和基本的图像处理技术。本篇文章将深入探讨一个...
在本文中,我们将深入探讨如何使用C#编程语言高仿Windows自带的画图板应用程序,实现各种绘图功能。这个项目旨在提供一个类似的用户界面和功能集,包括打开和保存图片、文字绘制、多种形状绘制、画刷和画笔操作、...
【标题】:“学生制作的画图板” 这个标题揭示了一个由学生开发的专门用于绘画的软件工具,很可能是为了帮助其他学生,特别是低年级的学弟学妹们完成作业中的绘画部分。这样的画图板可能包含了一系列基础和进阶的...
QT画图板是一个基于Qt库开发的图形用户界面应用程序,主要功能是提供一个交互式的画布,用户可以在上面进行绘图操作。对于初学者来说,QT画图板是一个极好的学习资源,它展示了Qt库在图形绘制和用户交互方面的强大...
在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来创建一个简易的画图板应用程序。MFC 是微软为Windows平台提供的一种C++类库,它简化了Windows API的使用,使得开发Windows应用程序更加高效...
在本文档中,我们将探讨如何使用QtCreator来编写一个画图板程序。画图板是一个基础且功能丰富的应用,常常作为学习图形用户界面(GUI)编程的一个入门项目。本文将重点介绍Qt的GUI框架、主要组件以及编程概念。 ###...
【标题】"仿XP画图板"是一款基于JAVA编程语言开发的应用程序,旨在模拟Windows XP操作系统中的经典画图工具。这个项目是为那些希望学习或熟悉GUI(图形用户界面)编程和事件处理的初学者设计的,同时也为用户提供了...
下面我们将深入探讨 Canvas API 以及如何使用这些资源来实现一个画图板。 首先,`index.html` 是网页的主文件,它定义了页面的基本结构。在这个项目中,`index.html` 应该包含一个 `<canvas>` 元素,它是整个画图板...
【描述】:“画图板源码示例画图板源码示例画图板源码示例”可能是重复强调了源码示例是关于画图板功能实现的,暗示这个示例可能涵盖了多个关键功能,如颜色选择、线条绘制、形状绘制、橡皮擦、撤销/重做等。...
【JAVA简易画图板】是一个基于Java编程语言开发的简单绘图应用程序,它为用户提供了一个基本的图形界面,用户可以通过这个界面进行简单的绘画操作。这个程序包含了一些基本的绘图功能,如绘制形状、使用铅笔工具以及...
在Android平台上,开发一个画图板应用涉及到许多关键的技术点,包括用户交互、图形渲染、数据存储以及资源管理等。以下是对"基于Android系统的画图板"这一主题的详细解析: 1. **用户交互**:Android系统提供了丰富...
Java画图板应用是一种基于Java编程语言开发的图形用户界面(GUI)程序,它提供了类似Windows操作系统内置画图板的功能。这个程序的核心是利用Java的Swing或JavaFX库来构建用户界面,允许用户进行基本的绘图操作,如...
在这个"java swing 画图板"项目中,开发者仿照了Windows操作系统中的“画图”程序,提供了一个基本的绘图环境。下面将详细讨论相关的Java Swing知识点。 1. **组件(Components)**:在Swing中,JFrame是窗口的基础...
在本文中,我们将深入探讨基于VC++的"vc画图板源码",这是一个用于创建图形界面应用程序的项目。这个项目的核心是利用MFC(Microsoft Foundation Classes)库,它是Microsoft为C++开发者提供的一个用于构建Windows...
在本项目中,我们探索的是一个简易的"画图板代码"实现,它允许用户绘制直线、矩形和椭圆。这个基础的图形界面应用程序旨在提供一个简单的平台,让用户能够进行基本的图形创作。我们将深入讨论这个画图板的核心功能和...