`
利li香
  • 浏览: 36284 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

画图板

阅读更多
package zxl.java0221;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
//任务:完成重绘,把画布上的图形以队列的形式遍历出来保存到内存中
      //重绘是在drawpanel上,所以paint的方法要继承它;

//创建一个画板类
public class DrawFrame extends JFrame {
//给中间面板添加多个单选按钮,所以要分组,且要使用for循环
ButtonGroup group=new ButtonGroup();
//定义一个画布面板
private javax.swing.JPanel drawpanel;
//定义一个保存形状的队列对象
Queue<Shape> shapes=new Queue<Shape>();
    //主方法
public static void main(String args[]){
//在主函数里面是由系统调用的,可以由类创建对象
DrawFrame df=new DrawFrame();
//对象实现窗体初始化的方法
df.initDrawFrame();

}
//窗体初始化的方法
public void initDrawFrame(){
//设置窗体标题和大小
this.setTitle("我的画板");
this.setSize(600,400);
//改变左上角的图片
//创建图标对象,该图标对象支持png格式
ImageIcon icon=new ImageIcon("ppp.png");
//创建一个图片对象得到该图标返回的图片
Image img=icon.getImage();
//在窗体上设置该图片
this.setIconImage(img);
        //只有JPanel才有边框布局,图片没有

//给窗体分匡,画板调用创建画板的方法
JPanel toolpanel=this.createToolPanel();
JPanel colorpanel=this.createColorPanel();
JPanel centerpanel=this.createCenterPanel();
//将各个面板分别加到窗体上
this.add(toolpanel,BorderLayout.WEST);
this.add(centerpanel,BorderLayout.CENTER);
this.add(colorpanel,BorderLayout.SOUTH);
//给窗体设置菜单栏
//创建菜单对象
Menu menu1=new Menu("文件(F)");
Menu menu2=new Menu("编辑(E)");
Menu menu3=new Menu("查看(V)");
//设置菜单条
MenuBar menbar=new MenuBar();
this.setMenuBar(menbar);
menbar.add(menu1);
menbar.add(menu2);
menbar.add(menu3);
//在菜单"文件"下面再设置菜单
Menu menu11=new Menu("新建");
//在菜单"新建"下添加菜单项
MenuItem item111=new MenuItem("工具");
MenuItem item112=new MenuItem("格式");
menu11.add(item111);
menu11.addSeparator();
menu11.add(item112);
Menu menu12=new Menu("打开");
MenuItem item121=new MenuItem("颜色");
MenuItem item122=new MenuItem("字体");
menu12.add(item121);
menu12.addSeparator();
menu12.add(item122);
menu1.add(menu11);
//在menu11和menu12之间添加分隔符
menu1.addSeparator();
menu1.add(menu12);
//分别在菜单"编辑""查看"中设置菜单项
MenuItem item21=new MenuItem("保存");
MenuItem item22=new MenuItem("帮助");
MenuItem item31=new MenuItem("撤销");
MenuItem item32=new MenuItem("退出");
menu2.add(item21);
//在两者之间添加分隔符
menu2.addSeparator();
menu2.add(item22);
menu3.add(item31);
//在两者之间添加分隔符
menu3.addSeparator();
menu3.add(item32);
//设置可见
this.setVisible(true);
//关闭窗口是退出程序
this.setDefaultCloseOperation(3);
//添加画布,得到权限
Graphics g=drawpanel.getGraphics();
DrawListener dlis=new DrawListener(group,g,shapes);
drawpanel.addMouseListener(dlis);//添加鼠标监听器最好不要监听按钮,按钮用动作监听器

}
//实现分框的方法,工具面板
public javax.swing.JPanel createToolPanel(){
//创建工具面板对象
JPanel toolpane=new JPanel();
//设置工具面板的颜色
//toolpane.setBackground(Color.orange);
//
// //设置工具面板的图片,但是要先设置工具面板的布局
FlowLayout layout=new FlowLayout(FlowLayout.CENTER,0,0);//0,0表示垂直于水平间的距离
        toolpane.setLayout(layout);
// //创建图标对象
// ImageIcon icon1=new ImageIcon("sss.jpg");
// //将图标放到标签对象上
// JLabel lab=new JLabel(icon1);
// //将标签添加到工具面板上
// toolpane.add(lab);

//先定义一个字符串数组
String[] s={"0","1","2","3","4","5","6","7","8","9","line","11","rect","13","oval","roundrect"};
for(int i=0;i<s.length;i++){
  //JRadioButton rbut=new JRadioButton(s[i]);//记下单选按钮组的名字
JRadioButton rbut=new JRadioButton();
  toolpane.add(rbut);
  group.add(rbut);
  //设置单选按钮的的背景颜色为透明
  rbut.setOpaque(true);
  //对单选按钮组贴图片
//创建标签对象
ImageIcon icon=new ImageIcon("images/draw"+i+".jpg");
ImageIcon icon1=new ImageIcon("images/draw"+i+"-1.jpg");
ImageIcon icon2=new ImageIcon("images/draw"+i+"-2.jpg");
ImageIcon icon3=new ImageIcon("images/draw"+i+"-3.jpg");
//在单选按钮上添加图标
rbut.setIcon(icon);//默认图标
rbut.setRolloverIcon(icon1);//鼠标放上去的图标
rbut.setPressedIcon(icon2);//鼠标按下去时的图标
rbut.setSelectedIcon(icon3);//鼠标被选中时的图标
//对单选按钮组设置动作命令
rbut.setActionCommand(s[i]);
if(i==10){
rbut.setSelected(true);
}
}


//设置工具面板的大小
toolpane.setPreferredSize(new java.awt.Dimension(70,80));
//返回toolpane
return toolpane;
}
//实现分框的方法,中间面板
public javax.swing.JPanel createCenterPanel(){
//创建中间面板对象
JPanel centerpane=new JPanel();
//新开辟一个画布面板给定义的drawpanel属性
drawpanel=new ChongHui();
//将画布面板添加到中间面板上
centerpane.add(drawpanel);
//设置画布面板的大小
drawpanel.setPreferredSize(new java.awt.Dimension(360,220));
//设置中间面板的布局
FlowLayout layout=new FlowLayout(FlowLayout.LEFT);
centerpane.setLayout(layout);
//给中间面板设置颜色
centerpane.setBackground(Color.GRAY);
//返回toolpane
return centerpane;
}
//实现分框的方法,颜色面板
public javax.swing.JPanel createColorPanel(){
//创建工具面板对象
JPanel colorpane=new JPanel();
// //给颜色面板设置布局
FlowLayout layout=new FlowLayout(FlowLayout.LEFT);
colorpane.setLayout(layout);
// //添加图片,先创建图标对象,该图标支持该图片格式
// ImageIcon icon=new ImageIcon("sss.jpg");
// //将图标添加到标签对象上
// JLabel lab=new JLabel(icon);
// //将标签添加到颜色面板上
// colorpane.add(lab);
//设置颜色面板的颜色
colorpane.setBackground(Color.pink);
//给颜色面板添加颜色按钮,因为要添加多个,所以用到for循环
//先定义一个颜色数组
Color[] colors={Color.BLACK,Color.blue,Color.CYAN,Color.gray,
Color.green,Color.magenta,Color.pink,Color.ORANGE,Color.RED};
//给颜色面板上的按钮添加监听器
//动作监听器是一个接口,不能new 一个对象,但只要实现其方法就能够了
//创建监听器对象
ActionListener alis=new ActionListener(){

public void actionPerformed(ActionEvent e){
//得到事件源对象(即动作监听器所操作的对象,在这里是被点击按钮对象)
Object obj=e.getSource();
//将事件源对象强行装化为按钮组对象,因为要绘制颜色
JButton but=(JButton) obj;
DrawListener.yanse=but.getBackground();
}
};
for(int i=0;i<colors.length;i++){
JButton jbut=new JButton();
jbut.setBackground(colors[i]);
colorpane.add(jbut);
jbut.setPreferredSize(new java.awt.Dimension(30,30));
//jbut.setOpaque(true);
//给按钮添加动作监听器
jbut.addActionListener(alis);
}

//设置颜色面板的大小
colorpane.setPreferredSize(new java.awt.Dimension(40,40));

//返回toolpane
return colorpane;
}
//在类中在定义类,只需要去掉public即可
class ChongHui extends JPanel{
//重写JPanel中用来绘制窗体的方法
public void paint(Graphics g){
//调用父类中的方法
super.paint(g);
System.out.println("绘制了");
//因为要保存形状,所以要将形状遍历出来
for(int i=0;i<shapes.getSize();i++){
//取出形状
Shape sh=shapes.get(i);
//绘制
sh.draw(g);
}
}
}


}
分享到:
评论

相关推荐

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

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

    java画图板java画图板

    java画图板java画图板java画图板

    java 画图板 windows画图板简单实现

    用java实现的windows画图板的简单模式,对于java初学者的事件触发器学习有很好的帮助。。。

    win10画图板软件下载

    win10画图板下载,解压点击即可用 win10画图板下载,解压点击即可用 win10画图板下载,解压点击即可用 win10画图板下载,解压点击即可用 win10画图板下载,解压点击即可用 win10画图板下载,解压点击即可用 win10...

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

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

    C# 高仿 Windows 画图板

    C# 高仿 Windows 画图板,实现图片的打开/保存/文字绘制/矩形/圆形/椭圆形/圆角矩形/画刷/画笔/喷枪/曲线/取色等功能。

    仿windows画图板

    仿windows画图板程序,基本实现windows画图板的功能

    画图板_Vc_

    类似Windows画图板的小程序,功能和界面全部模仿于Windows自带的画图板,界面如截图。功能主要有: 手绘线、简单图形、文字输入、图块拖放、重复撤销、画面缩放、打开保存图片文件

    JAVA开发的画图板

    本程序完成的是一个类似于Windows画图板的画图程序,由于不是开发和设计专业的绘图和图像制作软件,所以,完成的程序的简单功能包括以下几项: 1.新建 2.打开或保存 3.绘制一些基本的图形组件 4.用鼠标在绘图板上单击...

    JAVA简易画图板

    简易画图板。有基本形状绘制,加铅笔和橡皮,可撤销清除。可保存打开。

    仿XP画图板

    自己做的一个仿XP的画图板练手 实现了画图板大多数常用功能 界面和XP的画图板非常相似 可以给新手参考用

    canvas 画图板.zip

    canvas 画图板的实现

    仿XP画图板.rar

    功能有: 1、工具栏中功能:截图并保存,橡皮擦,取色笔,铅笔,刷子,喷枪,文本框,直线,矩形,椭圆,圆角矩形等功能 2、颜色选择功能(2处):底部...4、清空画图面板的功能 5、打开图片,保存修改后的图片的功能

    C#画图板-直线、曲线、矩形

    C#画图板包含直线、曲线、矩形等,还可以选择线条颜色。

    画图板,window画图板

    动态画图,画图板,可以动态画图,基本画图功能

    Qt画图板_源代码

    Qt实现的简易画图板,可供初学者参考学习。

    java swing 画图板

    java swing 实现的仿照win的画图板,欢迎交流学习

    基于qt实现的画图板

    基于qt实现的画图板,内含基本的绘画功能,例如选取画笔,填充,图像打开和保存等。

    C#画图板程序

    C#编写的画图板程序,能实现画刷、画笔,以及直线方形和椭圆等功能,还有文件菜单栏的相关功能

    QT画图板详例

    未入门学习QT的神程序画图板.内含各种功能以及使用范例,

Global site tag (gtag.js) - Google Analytics