Java基础之画图板

阅读更多

 这是我刚开始学习Java的另一个实例,先上图。。
Java基础之画图板_第1张图片

首先也是先从界面开始,第一就是主要面板,就是一个JFrame,前面的按钮是JRadioButton,然后还有一个

JComboBox下拉列表

public void UI() {
        //主界面
		jf.setTitle("黄飞自创画图板");//标题
		jf.setSize(500, 300);//大小
		jf.setLocation(400, 400);//初始位置
		jf.setLayout(new FlowLayout(FlowLayout.LEFT));//布局
		jf.setResizable(false);//是否可以改变大小
		jf.setDefaultCloseOperation(3);//点击关闭按钮退出程序
		JButton jb = new JButton("选颜色");
		//
		jc=new JComboBox();//一个下拉列表
		//添加各种选项
		jc.addItem("6");
		jc.addItem("12");
		jc.addItem("24");
		//”直线“按钮
		JRadioButton jr1 = new JRadioButton("直线");
		jr1.setActionCommand("直线");
		//添加监听
		jr1.addActionListener(new ActionListener(){
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
			f=false;
			f2=false;
			}
			
		});
		//“圆”按钮
		JRadioButton jr2 = new JRadioButton("圆");
		jr2.setActionCommand("圆");
		jr2.addActionListener(new ActionListener(){//添加监听

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
			f=false;	
			f2=false;
			}
			
		});
		//“举行”按钮
		JRadioButton jr3 = new JRadioButton("矩形");
		jr3.setActionCommand("矩形");
		jr3.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
			f=false;
			f2=false;
			}
			
		});
		JRadioButton jr4 = new JRadioButton("铅笔");
		jr4.setActionCommand("铅笔");
		jr4.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				f=true;
				f2=false;
			}
		});
		JRadioButton jr5=new JRadioButton("笔刷");
		jr5.setActionCommand("笔刷");
		jr5.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				f=true;
				f2=false;
			}
			
		});
		JRadioButton jr6=new JRadioButton("橡皮");
		jr6.setActionCommand("橡皮");
		jr6.addActionListener(new ActionListener(){

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				f=true;
				f2=true;
			}
			
		});
		//bg是一个buttonGroup对象,用来存放按钮
		bg.add(jr1);
		bg.add(jr2);
		bg.add(jr3);
		bg.add(jr4);
		bg.add(jr5);
	    bg.add(jr6);
	    //将按钮添加到窗体上去
		jf.add(jr1);
		jf.add(jr2);
		jf.add(jr3);
		jf.add(jr4);
		jf.add(jr5);
		jf.add(jr6);
		jf.add(jb);
		jf.add(new JLabel("尺寸"));
		jf.add(jc);

 其中对按钮的监听只是改变f的值,f后面会用到,来控制一些方法,然后,要说的的就是,用了一个ButtonGroup啦储存按钮,这样我就可以通过ButtonGroup里面的getSelection().getActionCommand()来得到目前是哪个按钮被按下了,这样才能在画图的监听方法中来具体实现画那种图

// 监听选颜色按钮
		jb.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				showColorSelecter();//显示颜色选择器
			}

		});

 

添加一个按钮监听来实现对颜色的选择

// 颜色选择函数
	private void showColorSelecter() {
		if(f2==false){
	color = JColorChooser.showDialog(null, "请选择颜色", Color.black);}
	}

 JColorChooser.showDialog(null, "请选择颜色", Color.black);实现下面的东东,并且返回您选择的颜色
Java基础之画图板_第2张图片

以下方法可以实现在面板上对鼠标的监听
 jf.addMouseMotionListener(me);//添加鼠标监听,
  jf.addMouseListener(me);//添加鼠标监听

其中的me是一个MouseAdapter对象,他继承了很多鼠标监听的接口,具体查看API文档

具体实现的方法

private MouseAdapter me = 	new MouseAdapter() {//一个鼠标监听对象
	public void mousePressed(MouseEvent e) {//鼠标按下
			x1 = e.getX();
			y1 = e.getY();
		}

		public void mouseReleased(MouseEvent e) {//鼠标抬起
			x2 = e.getX();
			y2 = e.getY();
			g.setColor(color);
			// g.drawLine(x1,y1,x2,y2);
			Huatu();
		}

	    public void mouseDragged(MouseEvent e){//鼠标拖动
	    	if(f==true){
	    	x2 = e.getX();
			y2 = e.getY();
			g.setColor(color);
			Huatu();
			x1 = x2;
			y1 = y2;
			}
	    }
		
	};

 huatu方法

private void Huatu() {
		if (bg.getSelection().getActionCommand().equals("铅笔")) {
			g.drawLine(x1, y1, x2, y2);//画线
		}
		if (bg.getSelection().getActionCommand().equals("直线")) {
			g.drawLine(x1, y1, x2, y2);
		}
		if (bg.getSelection().getActionCommand().equals("矩形")) {
			//画矩形,参数为左上角坐标,长和宽
			if(x1>x2&&y2>y1){
				g.drawRect(x2,y1,x1-x2,y2-y1);
			}
			if(x2>x1&&y1>y2){
				g.drawRect(x1,y2,x2-x1,y1-y2);
					
			}
			if(x1>x2&&y2x2&&y2>y1){
				g.drawOval(x2,y1,x1-x2,y2-y1);
			}
			if(x2>x1&&y1>y2){
				g.drawOval(x1,y2,x2-x1,y1-y2);
					
			}
			if(x1>x2&&y2 
  
 

 其中的橡皮,只是把颜色换成背景色而已。。getSelectedItem().是获取下拉列表中你选择的数据

 

这个例子对实现鼠标监听,Graphcs类有个很好的加深,鼠标监听用来获取鼠标坐标

源代码已经上传,又不懂之处可以找我,或者留言,505860922

  • Java基础之画图板_第3张图片
  • 大小: 15 KB
  • Java基础之画图板_第4张图片
  • 大小: 24 KB
  • 画图板.zip (10.6 KB)
  • 描述: 源码
  • 下载次数: 3
  • 查看图片附件

你可能感兴趣的:(java实例,java画图板,Graphics)