Java 小小绘图板,各种图形的绘制和文字的写入,也可以调整文字画笔的粗细 。还可以保存图像,非常值得学习的java 绘图板源代码下载地址:

具体下载目录在 /pub/2011/11/05/java 绘图板源代码/

用到的各种图片  请将图片放在icon文件夹下

circle.jpg

color.jpg

fcircle.jpg

foval.jpg

frect.jpg

froundrect.jpg

line.jpg

newfile.jpg

openfile.jpg

oval.jpg

pen.jpg

rect.jpg

roundrect.jpg

rubber.jpg

savefile.jpg

stroke.jpg

word.jpg

packageminidrawpad;

importjava.awt.*;

importjava.awt.event.*;

importjava.io.InputStreamReader;

importjava.io.Reader;

importjavax.swing.*;

// 主界面类

publicclassDrawPadextendsJFrameimplementsActionListener {

/**

* @param FileName DrawPad

* @author Liu Jun Guang s

* @param V 1.0.0

*/

privatestaticfinallongserialVersionUID = -2551980583852173918L;

privateJToolBar buttonpanel;//定义按钮面板

privateJMenuBar bar ;//定义菜单条

privateJMenu file,color,stroke,help;//定义菜单

privateJMenuItem newfile,openfile,savefile,exit;//file 菜单中的菜单项

privateJMenuItem helpin,helpmain,colorchoice,strokeitem;//help 菜单中的菜单项

privateIcon nf,sf,of;//文件菜单项的图标对象

privateJLabel startbar;//状态栏

privateDrawArea drawarea;//画布类的定义

privateHelp  helpobject;//定义一个帮助类对象

privateFileClass fileclass ;//文件对象

String[] fontName;

//定义工具栏图标的名称

privateString names[] = {"newfile","openfile","savefile","pen","line"

,"rect","frect","oval","foval","circle","fcircle"

,"roundrect","froundrect","rubber","color"

,"stroke","word"};//定义工具栏图标的名称

privateIcon icons[];//定义图象数组

privateString tiptext[] = {//这里是鼠标移到相应的按钮上给出相应的提示

"新建一个图片","打开图片","保存图片","随笔画","画直线"

,"画空心的矩形","填充矩形","画空心的椭圆","填充椭圆"

,"画空心的圆","填充圆","画圆角矩形","填充圆角矩形"

,"橡皮擦","颜色","选择线条的粗细","文字的输入"};

JButton button[];//定义工具条中的按钮组

privateJCheckBox bold,italic;//工具条字体的风格(复选框)

privateJComboBox stytles ;//工具条中的字体的样式(下拉列表)

publicDrawPad(String string) {

// TODO 主界面的构造函数

super(string);

//菜单的初始化

file =newJMenu("文件");

color =newJMenu("颜色");

stroke =newJMenu("画笔");

help =newJMenu("帮助");

bar =newJMenuBar();//菜单条的初始化

//菜单条添加菜单

bar.add(file);

bar.add(color);

bar.add(stroke);

bar.add(help);

//界面中添加菜单条

setJMenuBar(bar);

//菜单中添加快捷键

file.setMnemonic('F');//既是ALT+“F”

color.setMnemonic('C');//既是ALT+“C”

stroke.setMnemonic('S');//既是ALT+“S”

help.setMnemonic('H');//既是ALT+“H”

//File 菜单项的初始化

try{

Reader reader =newInputStreamReader(getClass().getResourceAsStream("/icon"));//读取文件以类路径为基准

}catch(Exception e) {

// TODO 文件读取错误

JOptionPane.showMessageDialog(this,"图片读取错误!","错误",JOptionPane.ERROR_MESSAGE);

}

nf =newImageIcon(getClass().getResource("/icon/newfile.jpg"));//创建图表

sf =newImageIcon(getClass().getResource("/icon/savefile.jpg"));

of =newImageIcon(getClass().getResource("/icon/openfile.jpg"));

newfile =newJMenuItem("新建",nf);

openfile =newJMenuItem("打开",of );

savefile =newJMenuItem("保存",sf);

exit =newJMenuItem("退出");

//File 菜单中添加菜单项

file.add(newfile);

file.add(openfile);

file.add(savefile);

file.add(exit);

//File 菜单项添加快捷键

newfile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));

openfile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));

savefile.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));

exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));

//File 菜单项的注册监听

newfile.addActionListener(this);

openfile.addActionListener(this);

savefile.addActionListener(this);

exit.addActionListener(this);

//Color 菜单项的初始化

colorchoice =newJMenuItem("调色板");

colorchoice.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));

colorchoice.addActionListener(this);

color.add(colorchoice);

//Help 菜单项的初始化

helpmain =newJMenuItem("帮助主题");

helpin =newJMenuItem("关于小小绘图板");

//Help 菜单中添加菜单项

help.add(helpmain);

help.addSeparator();//添加分割线

help.add(helpin);

//Help 菜单项的注册监听

helpin.addActionListener(this);

helpmain.addActionListener(this);

//Stroke 菜单项的初始化

strokeitem =newJMenuItem("设置画笔");

strokeitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));

stroke.add(strokeitem);

strokeitem.addActionListener(this);

//工具栏的初始化

buttonpanel =newJToolBar( JToolBar.HORIZONTAL);

icons =newImageIcon[names.length];

button =newJButton[names.length];

for(inti =0;i

{

icons[i] =newImageIcon(getClass().getResource("/icon/"+names[i]+".jpg"));//获得图片(以类路径为基准)

button[i] =newJButton("",icons[i]);//创建工具条中的按钮

button[i].setToolTipText(tiptext[i]);//这里是鼠标移到相应的按钮上给出相应的提示

buttonpanel.add(button[i]);

button[i].setBackground(Color.red);

if(i<3)button[i].addActionListener(this);

elseif(i<=16) button[i].addActionListener(this);

}

CheckBoxHandler CHandler =newCheckBoxHandler();//字体样式处理类

bold =newJCheckBox("粗体");

bold.setFont(newFont(Font.DIALOG,Font.BOLD,30));//设置字体

bold.addItemListener(CHandler);//bold注册监听

italic =newJCheckBox("斜体");

italic.addItemListener(CHandler);//italic注册监听

italic.setFont(newFont(Font.DIALOG,Font.ITALIC,30));//设置字体

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();//计算机上字体可用的名称

fontName = ge.getAvailableFontFamilyNames();

stytles =newJComboBox(fontName);//下拉列表的初始化

stytles.addItemListener(CHandler);//stytles注册监听

stytles.setMaximumSize(newDimension(400,50));//设置下拉列表的最大尺寸

stytles.setMinimumSize(newDimension(250,40));

stytles.setFont(newFont(Font.DIALOG,Font.BOLD,20));//设置字体

//工具栏中添加字体式样

buttonpanel.add(bold);

buttonpanel.add(italic);

buttonpanel.add(stytles);

//状态栏的初始化

startbar =newJLabel("我的小小绘图板");

//绘画区的初始化

drawarea =newDrawArea(this);

helpobject =newHelp(this);

fileclass =newFileClass(this,drawarea);

Container con = getContentPane();//得到内容面板

con.add(buttonpanel, BorderLayout.NORTH);

con.add(drawarea,BorderLayout.CENTER);

con.add(startbar,BorderLayout.SOUTH);

Toolkit tool = getToolkit();//得到一个Tolkit类的对象(主要用于得到屏幕的大小)

Dimension dim = tool.getScreenSize();//得到屏幕的大小 (返回Dimension对象)

setBounds(40,40,dim.width-70,dim.height-100);

setVisible(true);

validate();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

//设置状态栏显示的字符

publicvoidsetStratBar(String s) {

startbar.setText(s);

}

publicvoidactionPerformed(ActionEvent e) {

// TODO 事件的处理

for(inti =3; i<=13;i++)

{

if(e.getSource() ==button[i])

{

drawarea.setCurrentChoice(i);

drawarea.createNewitem();

drawarea.repaint();

}

}

if(e.getSource() == newfile||e.getSource() == button[0])//新建

{fileclass.newFile();}

elseif(e.getSource() == openfile||e.getSource() == button[1])//打开

{fileclass.openFile();}

elseif(e.getSource() == savefile||e.getSource() == button[2])//保存

{fileclass.saveFile();}

elseif(e.getSource() == exit)//退出程序

{System.exit(0);}

elseif(e.getSource() == colorchoice||e.getSource() == button[14])//弹出颜色对话框

{

drawarea.chooseColor();//颜色的选择

}

elseif(e.getSource() == button[15]||e.getSource()==strokeitem)//画笔粗细

{

drawarea.setStroke();//画笔粗细的调整

}

elseif(e.getSource() == button[16])//添加文字

{   JOptionPane.showMessageDialog(null,"请单击画板以确定输入文字的位置!","提示"

,JOptionPane.INFORMATION_MESSAGE);

drawarea.setCurrentChoice(14);

drawarea.createNewitem();

drawarea.repaint();

}

elseif(e.getSource() == helpin)//帮助信息

{helpobject.AboutBook();}

elseif(e.getSource() == helpmain)//帮助主题

{helpobject.MainHeip();}

}

//字体样式处理类(粗体、斜体、字体名称)

publicclassCheckBoxHandlerimplementsItemListener

{

publicvoiditemStateChanged(ItemEvent ie) {

// TODO 字体样式处理类(粗体、斜体、字体名称)

if(ie.getSource() == bold)//字体粗体

{

if(ie.getStateChange() == ItemEvent.SELECTED)

drawarea.setFont(1, Font.BOLD);

else

drawarea.setFont(1, Font.PLAIN);

}

elseif(ie.getSource() == italic)//字体斜体

{

if(ie.getStateChange() == ItemEvent.SELECTED)

drawarea.setFont(2, Font.ITALIC);

elsedrawarea.setFont(2, Font.PLAIN);

}

elseif(ie.getSource() == stytles)//字体的名称

{

drawarea.stytle = fontName[stytles.getSelectedIndex()];

}

}

}

}

绘画板 java_非常值得学习的java 绘图板源代码相关推荐

  1. java 画图板源代码_非常值得学习的java 绘图板源代码

    package minidrawpad; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; impor ...

  2. java 绘图板_非常值得学习的java 绘图板源代码

    package minidrawpad; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; impor ...

  3. linux学 java_[操作系统]Linux学习第二步(Java环境安装)

    [操作系统]Linux学习第二步(Java环境安装) 0 2017-05-19 00:02:21 jdk版本:jdk-8u131-linux-x64.rpm 注:以下操作在root用户或具有root权 ...

  4. 2022年有哪些值得学习的Java开源项目?这7个火爆了

    回顾2021年,开源社区有哪些火热的Java开源项目呢? 哪些值得我们在2022新的一年去参与去学习呢? 这里为大家总结了7个开源社区非常火热的Java项目,推荐给大家. 1.Java Design ...

  5. 网页设计手绘板绘画板,适合初学者学习使用,HTML

    作品如下动态图: 下载链接在文末: 点我免费下载资源 资源下载链接: https://download.csdn.net/download/weixin_43474701/34854658

  6. Java开发程序员最值得学习的10大技术

    作为一个开发人员,我们最大的挑战就是保持自己了解新的技术.技术变化很快,你大概每两年就会看到一个新版本的编程语言和框架. 就拿2017年来说,AR.VR.区块链.人工智能等等已经扑面而来了.除了这些离 ...

  7. 2021年,Java开发者值得学习的13项技能

    本文分享自百度开发者中心2021年,Java开发者值得学习的13项技能 作者 | Olivia Cuthbert 译者 | 王强 策划 | 刘燕 如果你想在这个竞争激烈的世界里,成为一名熟练开发 Ja ...

  8. Java开发2018年值得学习的10大技术

    转载自 Java开发2018年值得学习的10大技术 作为一个开发人员,我们最大的挑战就是保持自己了解新的技术.技术变化很快,你大概每两年就会看到一个新版本的编程语言和框架. 就拿2017年来说,AR. ...

  9. Java程序员最值得学习的10大技术

    程序员们是最具有挑战性的工作,我们最大的挑战就是保持自己了解新的技术.技术变化很快,你大概每两年就会看到一个新版本的编程语言和框架. 就拿2017年来说,AR.VR.区块链.人工智能等等已经扑面而来了 ...

最新文章

  1. R语言应用substr函数和substring函数抽取(extract)、删除(Remove)、替换、匹配(Match)特定的字符串、并对比两个函数的异同、grepl检查子字符串是否存在于字符串中
  2. 2020-08-20 将数据上传到 S3 或从S3下载
  3. HDU2425:Hiking Trip(简单bfs,优先队列实现)
  4. 新时达二代操作器刷写数据线_新时达380全系一体机快捷调试
  5. python常用内置模块-python常用的内置模块
  6. 在linux中安装rpm包
  7. OpenCV-Python Feature2D 特征点检测 (SIFT,SURF)
  8. Realm Configuration HOW-TO--官方
  9. 信息系统项目管理知识--知识产权与标准化
  10. Android 权限问题
  11. 数字化转型里面的这些名词都是什么关系呢?
  12. Spring基础知识和配置
  13. OpenCV 拉普拉斯算子Laplace Operator
  14. foxtable制作管理系统实例_某河道治理工程实例
  15. ASP.NET Core - Razor页面之Handlers处理方法
  16. 你会通过Docker部署war包吗
  17. vue组件之间8种组件通信方式总结
  18. 在工作或学习中要留出喝茶的时间
  19. python︱模块加载(pip安装)以及pycharm安装与报错解决方式
  20. $.ajax与$.post、$.get的区别

热门文章

  1. MongoTemplate 聚合查询
  2. Java Number 类和方法
  3. matlab 像素点的辐照度方程,用蒙特卡罗方法和MATLAB计算冷屏内壁表面辐射光线落入探测器芯片的比例...
  4. 资源管理框架(mesos/YARN/coraca/Torca/Omega)选型分析
  5. redis的GEO实战 (RedisTemplate)
  6. python 删除pdf页面_Python脚本使用pyPDF删除空白页面
  7. 嵌入式产品如何支持阿拉伯文显示---看这一篇就够了
  8. 2012年上半年信息系统项目管理师 上午试题和参考答案及解析
  9. 数据库实验4 SQL语言-SELECT查询操作
  10. 安卓海外SDK接入问题