`
java2liwei
  • 浏览: 14380 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

画图板

 
阅读更多

一个简单的画图板程序。

用到的图片在附件中。(新手,多包涵)

 

 

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画图板简单实现

    在Java编程语言中,实现一个简单的Windows画图板是一个经典的练习,它可以帮助初学者更好地理解图形用户界面(GUI)的设计以及事件处理机制。这个项目通常会涉及到Java的Swing库,这是一个用于创建桌面应用程序的GUI...

    画图板 代码 画图板 代码 画图板 代码

    画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码画图板 代码...

    基于qt实现的画图板

    这个"基于qt实现的画图板"项目提供了一个基础的图形用户界面(GUI)应用,让用户能够进行基本的绘画操作,比如选择画笔、填充颜色、打开和保存图像。以下是关于这个项目的一些关键知识点和相关技术的详细解释: 1. ...

    java画图板程序代码

    Java 画图板程序设计与实现 Java 画图板是使用 Java 语言编写的图形绘制程序,提供了基本的绘图功能,如画笔、直线、椭圆、矩形等,用户可以使用该程序绘制简单的图形。下面我们将对 Java 画图板程序进行详细的分析...

    画图板,window画图板

    《Windows画图板:探索动态画图的魅力》 Windows画图板,作为一款简单易用的图形编辑软件,是微软操作系统内置的一个基础工具,尤其适合初学者和儿童进行简单的绘图活动。它提供了丰富的基本画图功能,让用户能够...

    画图板_Vc_

    《VC++实现的简易画图板程序解析》 在计算机编程领域,开发一款类似Windows画图板的小程序是一项常见的实践项目,它可以帮助初学者更好地理解图形用户界面(GUI)编程和基本的图像处理技术。本篇文章将深入探讨一个...

    C# 高仿 Windows 画图板

    在本文中,我们将深入探讨如何使用C#编程语言高仿Windows自带的画图板应用程序,实现各种绘图功能。这个项目旨在提供一个类似的用户界面和功能集,包括打开和保存图片、文字绘制、多种形状绘制、画刷和画笔操作、...

    学生制作的画图板

    【标题】:“学生制作的画图板” 这个标题揭示了一个由学生开发的专门用于绘画的软件工具,很可能是为了帮助其他学生,特别是低年级的学弟学妹们完成作业中的绘画部分。这样的画图板可能包含了一系列基础和进阶的...

    QT画图板详例

    QT画图板是一个基于Qt库开发的图形用户界面应用程序,主要功能是提供一个交互式的画布,用户可以在上面进行绘图操作。对于初学者来说,QT画图板是一个极好的学习资源,它展示了Qt库在图形绘制和用户交互方面的强大...

    MFC 简易画图板

    在本文中,我们将深入探讨如何使用Microsoft Foundation Class (MFC) 库来创建一个简易的画图板应用程序。MFC 是微软为Windows平台提供的一种C++类库,它简化了Windows API的使用,使得开发Windows应用程序更加高效...

    QTcreator写画图板

    在本文档中,我们将探讨如何使用QtCreator来编写一个画图板程序。画图板是一个基础且功能丰富的应用,常常作为学习图形用户界面(GUI)编程的一个入门项目。本文将重点介绍Qt的GUI框架、主要组件以及编程概念。 ###...

    仿XP画图板

    【标题】"仿XP画图板"是一款基于JAVA编程语言开发的应用程序,旨在模拟Windows XP操作系统中的经典画图工具。这个项目是为那些希望学习或熟悉GUI(图形用户界面)编程和事件处理的初学者设计的,同时也为用户提供了...

    canvas 画图板.zip

    下面我们将深入探讨 Canvas API 以及如何使用这些资源来实现一个画图板。 首先,`index.html` 是网页的主文件,它定义了页面的基本结构。在这个项目中,`index.html` 应该包含一个 `&lt;canvas&gt;` 元素,它是整个画图板...

    画图板源码示例画图板源码示例

    【描述】:“画图板源码示例画图板源码示例画图板源码示例”可能是重复强调了源码示例是关于画图板功能实现的,暗示这个示例可能涵盖了多个关键功能,如颜色选择、线条绘制、形状绘制、橡皮擦、撤销/重做等。...

    JAVA简易画图板

    【JAVA简易画图板】是一个基于Java编程语言开发的简单绘图应用程序,它为用户提供了一个基本的图形界面,用户可以通过这个界面进行简单的绘画操作。这个程序包含了一些基本的绘图功能,如绘制形状、使用铅笔工具以及...

    基于android系统的画图板

    在Android平台上,开发一个画图板应用涉及到许多关键的技术点,包括用户交互、图形渲染、数据存储以及资源管理等。以下是对"基于Android系统的画图板"这一主题的详细解析: 1. **用户交互**:Android系统提供了丰富...

    Java画图板应用

    Java画图板应用是一种基于Java编程语言开发的图形用户界面(GUI)程序,它提供了类似Windows操作系统内置画图板的功能。这个程序的核心是利用Java的Swing或JavaFX库来构建用户界面,允许用户进行基本的绘图操作,如...

    java swing 画图板

    在这个"java swing 画图板"项目中,开发者仿照了Windows操作系统中的“画图”程序,提供了一个基本的绘图环境。下面将详细讨论相关的Java Swing知识点。 1. **组件(Components)**:在Swing中,JFrame是窗口的基础...

    vc画图板源码

    在本文中,我们将深入探讨基于VC++的"vc画图板源码",这是一个用于创建图形界面应用程序的项目。这个项目的核心是利用MFC(Microsoft Foundation Classes)库,它是Microsoft为C++开发者提供的一个用于构建Windows...

    画图板代码(一)

    在本项目中,我们探索的是一个简易的"画图板代码"实现,它允许用户绘制直线、矩形和椭圆。这个基础的图形界面应用程序旨在提供一个简单的平台,让用户能够进行基本的图形创作。我们将深入讨论这个画图板的核心功能和...

Global site tag (gtag.js) - Google Analytics