`
Mr.snail
  • 浏览: 27394 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

java学习——画图板

阅读更多
[size=large][/size]
姗姗迟来的画图板总结啊~~其实早就想写了,但是本来是想通过画图板来练习我参数传递的本领的,但因为各阶段的学习及学校的一些事就耽误了这么长时间了。。这次来做个总结的开头吧,之后有时间定会慢慢再完善的。

先让大家看看我的成果~

大家可以看到画板实现了较多的功能,直线、矩形、多边形、椭圆、铅笔、橡皮等功能都实现了,还有14种颜色可以供我们使用。
下面来为大家简略讲解下我的画图板制作课程:

一、界面的生成
首先,当然是先实例化一个窗体对象出来,设置好窗体的各种属性:标题、大小、背景颜色等。
接着,我们可以看到,在整个的窗体上大致分成了三部分。其实这就是三个面板对象,分别是工具栏面板、画图面板、颜色面板。然后我们可以看到,在颜色面板的左下方,还有一个很小的取色面板,就相当于现实生活中画家手中的那个取色板,用左键点某个颜色,取色板后面的小按钮就会变为该颜色,如果是用右键点某个颜色,取色板前面的小按钮就会变为该颜色。还有上面有一行菜单栏,但里面具体的选项功能我都没有实现出来...很是惭愧...下面我附上这一块的代码,应该能详细描述下这些功能是怎么实现的。
package Simple_Draw;

import java.awt.BorderLayout;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.UIManager;

/**
 * 主函数类
 * 
 * @author 王成威
 * 
 */
public class Draw_xp extends JFrame {

	
	/**
	 * 主函数
	 * 
	 * @param args
	 */
	public static void main(String args[]) {
		Draw_xp dp = new Draw_xp();
		dp.showFrame();
	}

	private void showFrame() {
		this.setTitle("仿XP画板");
		this.setSize(700, 600);
		this.setDefaultCloseOperation(3);
		this.setLocationRelativeTo(null);

		// 创建工具面板对象
		Tool_panel tpl = new Tool_panel();
		this.add(tpl, BorderLayout.WEST);

		Color_panel cpl = new Color_panel();
		this.add(cpl, BorderLayout.SOUTH);

		Draw_panel dpl = new Draw_panel(tpl);
		this.add(dpl, BorderLayout.CENTER);

		// 调用创建菜单栏的方法,获取到菜单栏的对象
		JMenuBar jmb = createMenuBar();
		// 将菜单栏的对象设置为窗体的菜单栏
		this.setJMenuBar(jmb);

		this.setVisible(true);
		
		

/**
	 * 创建菜单栏的方法
	 * 
	 * @return 返回JMenuBar的对象
	 */
	private JMenuBar createMenuBar() {
		// 实例化一个JMenuBar的对象
		JMenuBar jmb = new JMenuBar();
		// 菜单项的数组
		String[] arrayMenu = { "文件", "颜色", "帮助" };
		// 菜单子项的数组
		String[][] arrayMenuItem = { { "新建", "保存", "打开", "退出" }, { "编辑颜色" },
				{ "帮助主题", "关于画图" } };
		// 根据数据循环来创建菜单栏
		for (int i = 0; i < arrayMenu.length; i++) {
			// 实例化一个JMenu的对象
			JMenu menu = new JMenu(arrayMenu[i]);
			// 将menu添加到jmb对象中
			jmb.add(menu);
			for (int j = 0; j < arrayMenuItem[i].length; j++) {
				// 实例化JMenuItem的对象
				JMenuItem jmi = new JMenuItem(arrayMenuItem[i][j]);
				// 将jmi对象添加到menu中
				menu.add(jmi);
			}
		}
		return jmb;
	}
	

下面是工具栏面板类的代码:
package Simple_Draw;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JPanel;

/**
 * 工具类
 * 
 * @author 王成威
 * 
 */
public class Tool_panel extends JPanel {
	//声明一个存储用户选择的图形属性
	public String shape_command = "line";
	private Graphics g;

	// 构造方法
	public Tool_panel() {
		show();// 调用方法
	}

	// 制作工具栏的方法
	public void show() {
		// 实例化一个JPanel对象,充当容器来添加工具。
		JPanel panel = new JPanel();
		// 设置面板的布局为网格布局
		panel.setLayout(new GridLayout(5, 2, 4, 4));
		// 定义一个数组。
		String[] array = { "brush.jpg", "easer.jpg",
				"fillRect.jpg", "line.jpg", "oval.jpg",
				"pencil.jpg", "polygon.jpg", "rect.jpg",
				"roundrect.jpg", "spray.jpg" };
		// 循环创建按钮对象
		for (int i = 0; i < array.length; i++) {
			// 实例化一个ImageIcon的对象
		//	ImageIcon image = new ImageIcon(array[i]);
			Icon image = new ImageIcon(this.getClass().getResource(
					array[i]));
			// 实例化按钮对象,并设置按钮的图标
			JButton btn = new JButton(image);
			// 设置按钮的大小
			btn.setPreferredSize(new Dimension(25, 25));
			//获取到唯一的动作命令(截取图片的名字)(这里特别再注意下是怎么弄的,这是专门用于截取图片动作命令的方法)
			String fileName = array[i].substring(array[i].indexOf("/")+1, array[i].lastIndexOf(".jpg"));
			//设置按钮的动作命令值
			btn.setActionCommand(fileName);
			//设置按钮的动作命令监听器方法,绑定事件处理类的对象tool_listener
			btn.addActionListener(tool_listener);
			// 将按钮添加到面板上
			panel.add(btn);
			// 设置Tool_panel的布局为流式布局布局
			this.setLayout(new FlowLayout());
		}
		// 将panel添加到Tool_panel上
		this.add(panel);
		// 设置工具栏颜色
		this.setBackground(null);
	}
	/**
	 * 使用匿名内部类来实现动作事件处理接口add
	 */
	private ActionListener tool_listener = new ActionListener() {
		/**
		 * 事件处理方法
		 */
		public void actionPerformed(ActionEvent e) {
			//将按钮上的动作命令值获取到,存储到属性shape_command中
			shape_command =e.getActionCommand();
		}
	};
}

接着是颜色面板类的代码:
package Simple_Draw;

/**
 * 颜色类
 */
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JPanel;

public class Color_panel extends JPanel {
	//定义存储前景色和背景色的颜色属性
	public Color bcolor = Color.WHITE,fcolor = Color.BLACK;
	/**
	 * 构造方法(构造方法里面不能实例化对象)
	 */
	public Color_panel() {
		init();// 调用显示的方法
	}

	// 将颜色栏显示的方法
	private void init() {
		// 实例化一个panelFB对象
		JPanel panelFB = new JPanel();
		// 设置面板大小
		panelFB.setPreferredSize(new Dimension(30, 30));
		// 设置面板布局为空布局
		panelFB.setLayout(null);

		// 创建两个按钮(这里必须要定义为final类型,要控制其不能改变)
		final JButton btnF = new JButton();
		final JButton btnB = new JButton();

		// 设置颜色按钮的位置和大小。setBounds,记住,去查询下。
		btnF.setBounds(5, 5, 15, 15);
		btnB.setBounds(10, 10, 15, 15);
		// 设置颜色按钮的颜色
		btnF.setBackground(Color.black);
		btnB.setBackground(Color.red);
		// 将颜色按钮添加到面板上
		panelFB.add(btnF);
		panelFB.add(btnB);
		// 将可换颜色面板添加到总的颜色面板上
		this.add(panelFB);

		/**
		 * 实例化一个MouseAdapter抽象类的对象(匿名内部类)
		 */
		MouseAdapter ma = new MouseAdapter(){
			/**
			 * 鼠标按下时执行的方法
			 */
			public void mousePressed(MouseEvent e) {
				//获取到事件源对象 按钮(什么意思?问熊哥)
				JButton btn = (JButton)e.getSource();
				//判断当前点击的是否是左键,如果是则改变背景色,条件是e.getButton()返回的值是否为1
				if(e.getButton() == 1){
					//获取到按钮上的颜色了
					fcolor = btn.getBackground();
					//改变背景色按钮上的颜色
					btnF.setBackground(fcolor);
				}else if(e.getButton() == 3){//表示点击了右键
					//获取到按钮上的颜色了
					bcolor = btn.getBackground();
					//改变背景色按钮上的颜色
					btnB.setBackground(bcolor);
				}
				
			}
		};
		
		// 创建一个 可选颜色面板的对象
		JPanel panel1 = new JPanel();

		Color[] array = {Color.BLACK,Color.BLUE,Color.CYAN,Color.DARK_GRAY,
				Color.GRAY,Color.GREEN,Color.LIGHT_GRAY,Color.MAGENTA,Color.ORANGE,
				Color.PINK,Color.RED,Color.YELLOW,Color.WHITE,new Color(150,200,130),
				new Color(100,120,130),new Color(150,125,130),new Color(150,125,130),new Color(150,125,130),
				new Color(150,125,130),new Color(150,90,130),new Color(150,160,130),new Color(150,175,130),
				new Color(150,190,130),new Color(150,125,120),new Color(160,125,130),
				new Color(180,100,130),new Color(150,125,160),new Color(150,125,160) };

		for (int i = 0; i < array.length; i++) {
			// 创建颜色按钮对象
			JButton jbn = new JButton();
			// 设置颜色按钮大小,颜色
			jbn.setPreferredSize(new Dimension(20, 20));
			jbn.setBackground(array[i]);
			//给按钮添加鼠标监听器方法,绑定事件处理类的对象
			jbn.addMouseListener(ma);
			// 将按钮添加到可选颜色面板对象上
			panel1.add(jbn);

		}

		// 设置可选颜色面板上的布局为网格布局
		panel1.setLayout(new GridLayout(2, 14));
		// 设置为从左至右的流式布局
		this.setLayout(new FlowLayout(FlowLayout.LEFT));
		// 设置背景颜色
		this.setBackground(null);
		// 将可选颜色面板添加到颜色面板上
		this.add(panel1);

	}
}


二、监听器的添加
我觉得画图板的最大难点就是在于这一块了,监听器对于之前添加上的面板和窗体来说,就像赋予了它们生命,使它们能动起来。这里会用到两种监听器,一种是动作监听器,是添加到工具栏上各种工具按钮上和颜色面板上各种颜色按钮上。还有另一种是鼠标监听器,鼠标监听器主要是用于拿鼠标绘图时,各种图形的绘制的实现。动作监听器已经在上面两个颜色面板和工具栏面板里实现了,下面我们来看看鼠标监听器和画图面板类的代码。
package Simple_Draw;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;

import javax.swing.JPanel;

public class Draw_panel extends JPanel{

	// 创建一个面板对象
	public JPanel panel = new JPanel();
	public Tool_panel tp;
	/**
	 * 构造方法
	 */
	public Draw_panel(Tool_panel tp) {   //括号里面的参数到底什么时候要加,起了什么作用?为什么这里ab不用加进?!
		this.tp=tp;
		init();// 调用初始化面板的方法
	}

	private void init() {
		// 设置Draw_panel的布局为流式布局布局
		this.setLayout(new FlowLayout(FlowLayout.LEFT));
		//设置背景颜色
		this.setBackground(Color.GRAY);
		//设置背景颜色大小
		panel.setBackground(Color.WHITE);
		panel.setPreferredSize(new Dimension(400,300));
		// 将panel添加到Draw_panel上
		this.add(panel);
	}
	public void paint(Graphics g){
		super.paint(g);
		for(int i=1;i<MyMouseListener.array.length/4||i<MyMouseListener.array1.length/4;i++){
		    g.drawLine(MyMouseListener.array[4*i-4],MyMouseListener.array[4*i-3] ,MyMouseListener.array[4*i-2],MyMouseListener.array[4*i-1]);					
		    g.drawOval(MyMouseListener.array1[4*i-4], MyMouseListener.array1[4*i-3],Math.abs(MyMouseListener.array1[4*i-4]-MyMouseListener.array1[4*i-2]), Math.abs(MyMouseListener.array1[4*i-3]-MyMouseListener.array1[4*i-1]));
		}

		
		for(int i=1;i<MyMouseListener.array2.length/4;i++){
				g.drawLine(MyMouseListener.array2[4*i-4],MyMouseListener.array2[4*i-3] ,MyMouseListener.array2[4*i-2],MyMouseListener.array2[4*i-1]);
				
			}
		}	
	
}

package Simple_Draw;

/**
 * 鼠标监听器类
 */
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Random;

import javax.swing.JPanel;

public class MyMouseListener extends MouseAdapter {

	// 定义一些基本属性
	
	private Graphics g;
	private int x1, y1, x2, y2,x3,y3,x4,y4,i=1;
	private Tool_panel tp ;
	private Color_panel cp;
	private Color color = Color.BLACK;
	static int array[]=new int[10000];
	static int array1[]=new int[10000];//熊哥说静态的,不需要实例化对象。再问下是什么意思。
	static int array2[]=new int[10000];
	public static boolean flag;
	/**
	 * 构造方法
	 */
	public MyMouseListener(Tool_panel tp ,Color_panel cp,JPanel panel){
		this.tp = tp;
		this.cp = cp;
		this.g = panel.getGraphics();
	}

	public void mousePressed(MouseEvent e) {
		// 获得x1,y1的坐标
		x1 = e.getX();
		y1 = e.getY();
		//判断当前点击的是否是左键
		if(e.getButton() == 1){
			color = cp.fcolor;
		}else if(e.getButton() == 3){
			color = cp.bcolor;
		}
		
	}

	public void mouseReleased(MouseEvent e) {
		x2 = e.getX();
		y2 = e.getY();
				
		//设置图形的颜色
		g.setColor(color);
		//判断是否是直线
		if(tp.shape_command.equals("line")){
			array[4*i-4]=x1;
			array[4*i-3]=y1;
			array[4*i-2]=x2;
			array[4*i-1]=y2;
			i++;
			g.drawLine(x1, y1, x2, y2);
		}else if(tp.shape_command.equals("oval")){
			array1[4*i-4]=x1;
			array1[4*i-3]=y1;
			array1[4*i-2]=x2;
			array1[4*i-1]=y2;
			i++;
			if(x1<x2&&y1<y2){
				g.drawOval(x1, y1,Math.abs(x1-x2), Math.abs(y1-y2));
			}else if(x1>x2&&y1>y2){
				g.drawOval(x2, y2, Math.abs(x1-x2), Math.abs(y1-y2));
			}else if (x1>x2&&y1<y2){
				g.drawOval(x2,y1, Math.abs(x1-x2), Math.abs(y1-y2));
			}else if(x1<x2&&y1>y2){
				g.drawOval(x1, y2,Math.abs(x1-x2) , Math.abs(y1-y2));
			}
		}else if(tp.shape_command.equals("rect")) {
			if(x1<x2&&y1<y2){
		g.drawRect(x1, y1,Math.abs(x1-x2), Math.abs(y1-y2));
			}else if(x1>x2&&y1>y2){
				g.drawRect(x2, y2, Math.abs(x1-x2), Math.abs(y1-y2));	
			}else if(x1>x2&&y1<y2){
				g.drawRect(x2, y1, Math.abs(x1-x2), Math.abs(y1-y2));
			}else if(x1<x2&&y1>y2){
				g.drawRect(x1, y2, Math.abs(x1-x2), Math.abs(y1-y2));
			}	
		}else if(tp.shape_command.equals("roundrect")){
			if(x1<x2&&y1<y2){
				g.drawRoundRect(x1, y1,Math.abs( x2-x1), Math.abs(y2-y1),10,10);
					}else if(x1>x2&&y1>y2){
						g.drawRoundRect(x2, y2, Math.abs(x1-x2), Math.abs(y1-y2),10,10);	
					}else if(x1>x2&&y1<y2){
						g.drawRoundRect(x2, y1, Math.abs(x1-x2), Math.abs(y1-y2),10,10);
					}else if(x1<x2&&y1>y2){
						g.drawRoundRect(x1, y2, Math.abs(x1-x2), Math.abs(y1-y2),10,10);
					}	
		}
		
	}

	public void mouseDragged(MouseEvent e){
		//设置设置图形颜色
				g.setColor(color);
			    if(tp.shape_command.equals("brush")){
					x2=e.getX();
					y2=e.getY();
					//设置线条粗细
					Graphics2D g2d =  (Graphics2D)g;
					//将Graphics类型的g对象强制转换为Graphics2D的对象
					//调用Graphics2D设置线条粗细的方法来设置线条的粗细
					g2d.setStroke(new BasicStroke(8));
					//绘制粗线条
					g2d.drawLine(x1, y1, x2, y2);
					//将直线结束点的坐标作为下一条线的开始点
					x1=x2;
					y1=y2;
					g2d.setStroke(new BasicStroke(1));
				}else if(tp.shape_command.equals("easer")){
					//设置图形颜色     
					g.setColor(Color.WHITE);
					//g.setColor(cp.getColor());
					x2=e.getX();
					y2=e.getY();
				//将Graphics类型的g对象强制装换为Graphics2D的对象
					Graphics2D g2d = (Graphics2D)g;
					//调用Graphics2D设置线条粗细的方法来设置线条的粗细
					g2d.setStroke(new BasicStroke(8));
					//绘制粗线条
					g2d.drawLine(x1, y1, x2, y2);
					//将直线结束点的坐标作为下一条直线的开始点
					x1=x2;
					y1=y2;
					//重新设置线条的粗细
					g2d.setStroke(new BasicStroke(1));
				}else if(tp.shape_command.equals("pencil")){
//					设置图形的颜色
//				    g.setColor(cp.getColor());
					array2[4*i-4]=x1;
					array2[4*i-3]=y1;
					
					x3=e.getX();
					y3=e.getY();
					//绘制线条
				    g.drawLine(x1, y1, x3, y3);
				    //将直线的结束点的坐标作为下一条直线的开始点
				    x1=x3;
					y1=y3;
					array2[4*i-2]=x1;
					array2[4*i-1]=y1;
					i++;
				}else if(tp.shape_command.equals("spray")){//如果是喷枪
					//获取坐标值
					x2=e.getX();
					y2=e.getY();
					//实例化一个随机数对象
					Random rand = new Random();
					//循环画多个点
					for(int i=0;i<20;i++){
						//随机生成新的x和y点,用来绘制不同的点
						int x = rand.nextInt(8);
						int y = rand.nextInt(8);
						//开始绘制点
						g.drawLine(x2+x, y2+y, x2+x, y2+y);
					}
				}
				else if(tp.shape_command.equals("polygon")){//如果是多边形
					//获取坐标
					x4=e.getX();
					y4=e.getY();
					if(flag==true){
						g.drawLine(x1, y1, x2, y2);
						x3=x2;
						y3=y2;
						x4=x1;
						y4=y1;
						flag=false;
					}else if(flag==false){
						if(e.getClickCount()==2){
							g.drawLine(x3,y3,x4,y4);
							flag=true;
						}else{
							g.drawLine(x3,y3,x2,y2);
							x3=x2;
							y3=y2;
						}
					}
				}
	}		
}

大家可以看到,鼠标监听器里的各种图形的绘制方法可以说就是画图板的大脑了,都是关键,大家可以仔细研究下。

另外还有一个难点在于画图板的重绘,我会再细细道来的~
分享到:
评论
5 楼 wenshen22 2016-08-31  
 
4 楼 h411969069 2015-12-13  
大哥,为什么画不了图,鼠标没有实现监听。
3 楼 zeyonq 2015-11-24  
li1873997 写道
我把上述代码粘上去运行出现下面错误:到底是什么原因?版主是不是代码没帖完全啊Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:217)
at Simple_Draw.Tool_panel.show(Tool_panel.java:48)
at Simple_Draw.Tool_panel.<init>(Tool_panel.java:30)
at Simple_Draw.Draw_xp.showFrame(Draw_xp.java:38)
at Simple_Draw.Draw_xp.main(Draw_xp.java:28)


没有图标资源。图标资源要自己做。
2 楼 li1873997 2015-10-20  
我把上述代码粘上去运行出现下面错误:到底是什么原因?版主是不是代码没帖完全啊Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(ImageIcon.java:217)
at Simple_Draw.Tool_panel.show(Tool_panel.java:48)
at Simple_Draw.Tool_panel.<init>(Tool_panel.java:30)
at Simple_Draw.Draw_xp.showFrame(Draw_xp.java:38)
at Simple_Draw.Draw_xp.main(Draw_xp.java:28)
1 楼 pianogirl 2015-07-13  
好美观,基本功能也有了。然而好像没有实现油漆桶和保存功能诶

相关推荐

    java学习小总结——画图板制作(附代码)

    在Java学习过程中,创建一个简单的画图板是一个经典的练习项目,它可以帮助我们深入理解图形用户界面(GUI)的构建和事件处理机制。本篇小结将聚焦于如何使用Java实现一个基本的画图板,同时提供相关的源码分析。 1...

    原创java写的画图板软件(代码风格良好)

    通过这个简单的画图板软件,我们可以学习到Java GUI编程的基本原理和实践技巧,包括组件使用、事件处理、图形绘制等。对于初级开发者来说,这是一个很好的起点,可以帮助他们深入理解Java图形用户界面的开发。而对于...

    JAVA课程设计报告——电梅 画图板.doc

    使用java语言开发的一款画图板,含文档说明,可用于java爱好者学习以及课程设计使用。

    java设计画图板

    这个“java设计画图板”项目,显然是使用了集成开发环境(IDE)——MyEclipse进行编写的。MyEclipse是一款强大的Java应用程序开发工具,它提供了丰富的功能,包括代码编辑、调试、测试和部署等,特别适合初学者和...

    小小画图板的开发,java课程设计源代码

    《小小画图板的开发——基于Java的课程设计解析》 在计算机科学的学习过程中,课程设计是提升实践技能的关键环节。本次我们关注的项目是“小小画图板”的开发,这是一个利用Java编程语言实现的简单图形编辑器。下面...

    小小画图板开发——JAVA课程设计报告.doc

    【小小画图板开发——JAVA课程设计报告】 本报告详细阐述了一款基于Java开发的简易画图板程序,旨在提供类似Windows操作系统自带的画图工具的功能。通过参与这个项目,学生能够将已学的Java编程知识付诸实践,增强...

    二维画图板——绘制橡皮筋图形

    综上所述,这个二维画图板是一个基于Java的交互式图形应用程序,它利用了Graphics2D的强大功能,提供了丰富的绘图工具和操作,有助于学习者深入理解计算机图形学原理,并锻炼实际编程技能。通过不断地完善和扩展,...

    Java面向对象课程设计报告画图板毕业设计(论文)word格式.doc

    ### Java面向对象课程设计报告——画图板毕业设计知识点总结 #### 一、课程设计概述 本课程设计旨在让学生深入理解面向对象程序设计的基本概念和技术,通过实践项目提高学生的编程能力。具体而言,本设计围绕“画图...

    Java毕业设计——基于Java的模拟写字板的设计与实现(论文+答辩PPT+源代码+数据库).zip

    这是一个基于Java的毕业设计项目,主要目标是设计并...总之,这个Java毕业设计项目是一个综合性的实践,涉及到基础的编程技能、GUI设计、数据库操作、文件处理等多个方面,对于学习和提升Java开发能力具有很高的价值。

    java实现的一个小小画图板的开发

    下面将详细介绍这个Java实现的小型画图板的开发过程及其涉及的关键知识点。 首先,我们要构建用户界面(UI)。在Java中,我们可以使用JavaFX或Swing库来创建图形用户界面。由于这是一个较旧的项目,很可能使用的是...

    java课程设计大作业<画板图像编辑器>

    【Java课程设计大作业——画板图像编辑器】 在计算机科学与信息技术领域,Java是一种广泛使用的编程语言,尤其在开发桌面应用、Web应用以及移动应用等方面。本项目名为“画板图像编辑器”,是一个基于Java实现的...

    java代码-使用java制作一个带色板的手绘板画图小程序的源代码

    java代码-使用java制作一个带色板的手绘板画图小程序的源代码 ——学习参考资料:仅用于个人学习使用!

    HTML5+JS 画图板源码分享

    一个有趣的画图板, 用了 HTML5中的本地存储、下载、canvas 等技术,这个项目中用到了canvas 的很多基础功能,初学者可以学习一下 。 建议开发童鞋使用跨平台开发工具——统一开发环境UDE来进行查看、调试、开发哦~...

    java的小画图程序

    在该项目中,我们可能使用了Java语言的关键特性——继承和接口。继承是面向对象编程的核心概念,它允许一个类(子类)继承另一个类(父类)的属性和方法。通过继承,我们可以复用代码并创建特定功能的类。例如,在这...

    一个java画图软件

    《Java绘图软件详解——构建交互式图形编辑平台》 在信息技术日新月异的今天,编程语言的应用无处不在,而Java作为一种跨平台、面向对象的语言,其强大的功能和丰富的库支持使得开发者能够实现各种复杂的任务。本篇...

    JAVA:画图程序源码

    在Java中编写图形用户界面(GUI)程序,可以使用Java的标准库——Java AWT(Abstract Window Toolkit)和Swing组件。在这个"JAVA:画图程序源码"中,我们可以推测这是一个使用Java进行Windows编程的实例,它允许用户...

    Java核心开发技术从入门到精通.谭贞军.扫描版.part2

    第23课和24课是综合应用篇,分别讲解了使用Java开发画图板和数据库项目——公司管理系统的方法和流程。 内容全面,非常适合于Java技术的初学者,同时也适合具有一定Java基础,欲对Java开发技术进一步了解和掌握的...

    Java核心开发技术从入门到精通.谭贞军.扫描版.part1

    第23课和24课是综合应用篇,分别讲解了使用Java开发画图板和数据库项目——公司管理系统的方法和流程。 内容全面,非常适合于Java技术的初学者,同时也适合具有一定Java基础,欲对Java开发技术进一步了解和掌握的...

    java图形接口

    本篇内容重点介绍了一个利用Java AWT和Swing库创建的简单图形界面应用程序——画图板工具。 #### 二、核心概念与组件 ##### 1. Swing与AWT - **AWT (Abstract Window Toolkit)**:是Java早期提供的图形界面库,它...

    Java实战入门[一个资深Java培训老师倾力收藏].pdf

    本书《Java实战入门[一个资深Java培训老师倾力收藏]》为Java初学者提供了一条从零基础到实战开发的学习路径,涵盖了Java编程语言的多个重要方面。全书共分为二十一章,每章都围绕着具体的知识点和项目实践进行讲解,...

Global site tag (gtag.js) - Google Analytics