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

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

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

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

288ce1f2972d565c285f46d94e3486c3.gifcircle.jpg 

8d34b4dab7350487e24f5fa238106aea.gifcolor.jpg

d061c46456e64ca4970b885ecf7585b3.giffcircle.jpg

d26b86d4255f508108203f70f7e31c3e.giffoval.jpg

c73a999ec1d193fbaa9eedc80eb77974.giffrect.jpg

8a4102fe9c45bab7b87111b948076e52.giffroundrect.jpg

c6cb0b0071566afc7530c41eac1c6ad3.gifline.jpg

3a0bea72b1c81c3f5da1340cb06dfe08.gifnewfile.jpg

ad57f09a2c4da775b4c51ce5636be7e5.gifopenfile.jpg

0f273b7029d48d9074aba5d5d9bc1253.gifoval.jpg

fc4ef19249740249555a5d5206bc0069.gifpen.jpg

9843ccdaaac4c2c735ce45a85b764439.gifrect.jpg

25f00d4944bcc8ff07a5da904ba90aec.gifroundrect.jpg

f3fd22a65560856045cabc17225e054e.gifrubber.jpg

fc5659e1743eb03746180b50ede91bb8.gifsavefile.jpg

1c4a83ed6bf5a11162b6e26808c46b14.gifstroke.jpg

145a837288f9325ffa2c06657bc41162.gifword.jpg

537996fe864a4dac1f96173a938452b2.gifpackageminidrawpad;

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()];

}

}

}

}0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值