画图板的开发

画图板的开发

DrawUI.java

首先还是老规矩,先建一个包,这也是一个好习惯,每做一个项目就建一个包,这个习惯有利于你之后的回顾以及修改。
在这里插入图片描述
这英文也很好看懂,就画图板呗
然后有了上一个SimQQ界面的开发的经验,我们就知道,要先建一个界面。
于是我们建一个类,起名叫DrawUI

public class DrawUI{
public void showUI(){
}

//习惯性的添加主函数
public static void main(String[] args){
DrawUI ui = new DrawUI();
ui.showUI();
}
}

这个基本的操作已经准备好,然后就开始编写我们的界面吧。
首先还是老样子,添加窗体JFrame,这上面要用到的包要记得添加。

//为了方便,我们可以这样,这就相当于加入了全部的包
import.java	.awt.*
import.javax.swing.*

public class DrawUI{
public void showUI(){
//添加窗体并且设置属性
    JFrame dr = new JFrame();
    dr.setSize(1000,600);
    dr.setLocationRelativeTo(null);
    dr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
//添加布局
    JPanel north = new JPanel();//这里是边框布局,分东南西北中五块。
    north.setPreferredSize(new Dimension(0,30));//设置我们的北边框宽度是30
    dr.add(north,BorderLayout.NORTH);//将我们的边框加入到窗体上
    
    JPanel center = new JPanel();//这里是边框布局,分东南西北中五块。
    dr.add(center,BorderLayout.CENTER);//将我们的中部加入到窗体上
    center.setBackground(Color.WHITE);

    dr.setVisible(true);//
}

//习惯性的添加主函数
public static void main(String[] args){
DrawUI ui = new DrawUI();
ui.showUI();
}
}

以上点击运行,可以看到我们得到一个基本的窗体
在这里插入图片描述
上面是放按钮的,下面是画图的。
二者由我上面设定的northcenter区分。
接下来添加我们的按钮。

//为了方便,我们可以这样,这就相当于加入了全部的包
import.java	.awt.*
import.javax.swing.*

public class DrawUI{
public void showUI(){
//添加窗体并且设置属性
    JFrame dr = new JFrame();
    dr.setSize(1000,600);
    dr.setLocationRelativeTo(null);
    dr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
//添加布局
    JPanel north = new JPanel();//这里是边框布局,分东南西北中五块。
    north.setPreferredSize(new Dimension(0,30));//设置我们的北边框宽度是30
    dr.add(north,BorderLayout.NORTH);//将我们的边框加入到窗体上
    
    JPanel center = new JPanel();//这里是边框布局,分东南西北中五块。
    dr.add(center,BorderLayout.CENTER);//将我们的中部加入到窗体上
    center.setBackground(Color.WHITE);
//添加按钮
        JButton btn = new JButton("Line");//画直线的按钮
        north.add(btn);
        
        JButton btn1 = new JButton("Rect");//画矩形的按钮
        north.add(btn1);
        
        JButton btn2 = new JButton("Roun");//画圈的按钮
        north.add(btn2);
        
        JButton btn3 = new JButton("Oval");//画填充圆的按钮
        north.add(btn3);
        
        JButton btn4 = new JButton();
        btn4.setBackground(Color.RED);    //设置颜色的按钮
        btn4.setPreferredSize(new Dimension  (40,30));
        north.add(btn4);
		
        JButton btn5 = new JButton();
        btn5.setBackground(Color.BLUE);   //设置颜色的按钮
        btn5.setPreferredSize(new Dimension  (40,30));
        north.add(btn5);
        
        dr.setVisible(true);//别忘了这一句使窗体可见
}

//习惯性的添加主函数
public static void main(String[] args){
DrawUI ui = new DrawUI();
ui.showUI();
}
}

以上我们的界面就算是基本写好了,运行一下看效果。
在这里插入图片描述
然后就是第二步,添加监听器

BtnListener.java

首先我们添加一个动作监听器ActionListener,用来监听我们的鼠标点击按钮这个动作。

public class BtnListener implements ActionListener{

}

这时会报错,因为我们用了接口,但是并没有把接口里的方法都加上。
报错的地方是我们的 BtnListener,把鼠标放下它的下面,然后点击第一个解决办法
在这里插入图片描述
就解决了,然后开始写我们的监听内容。

这里我们注意到,上面的按钮有的是有字符串“Line”等,有的只有颜色,因此我们的方法要这样写。

public class BtnListener implements ActionListener{
    String cmd="0";
    Graphics g;
    public void actionPerformed(ActionEvent e) {
    	if(e.getActionCommand().equals("")) {
    	    //获取按钮上设置的颜色
    		Object sourceObj = e.getSource();
    		JButton btn = (JButton)sourceObj;
    		Color color = btn.getBackground();
    		g.setColor(color);
    	}else {
    	    //获取按钮上的字符串
    		cmd = e.getActionCommand();
    	}
    	
    }
}

DrawListener.java

建立一个类,名叫DrawListener

public class DrawListener implements MouseListener{
//定义我们的变量
    int startx;
    int starty;
    int endx;
    int endy;
    Graphics g;
}

同样的我们要把接口的方法引入。

public class DrawListener implements MouseListener,ChangeListener{
    int startx,starty,endx,endy;
    
	Graphics g;
	BtnListener btn;//建立我们动作监听器的对象
	
	
	public void mousePressed(MouseEvent e) {
		//按下时获取起始坐标
		startx = e.getX();
		starty = e.getY();
	}
	public void mouseReleased(MouseEvent e) {
		//松开时获取终点坐标
		endx = e.getX();
		endy = e.getY();
		
	//画线
	if(btn.cmd.equals("Line")) {
		g.drawLine(startx,starty,endx,endy);
	}
	//画矩形
	if(btn.cmd.equals("Rect")) {
		g.drawRect(startx,starty,endx,endy);
	}
	//画圈
	if(btn.cmd.equals("Roun")) {
		g.drawOval(startx,starty, 300, 280);
	}
	//画填充圆
	if(btn.cmd.equals("Oval")) {
		g.fillOval(startx,starty, 300, 280);
	}

	System.out.println(startx+","+starty+"--"+","+endy);
}
	public void mouseClicked(MouseEvent e) {}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}

}

然后我们的监听器就完成啦!
接下来只需要在我们的界面中加上我们的监听器就可以了。

import.java	.awt.*
import.javax.swing.*

public class DrawUI{
public void showUI(){
//添加窗体并且设置属性
    JFrame dr = new JFrame();
    dr.setSize(1000,600);
    dr.setLocationRelativeTo(null);
    dr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
//添加布局
    JPanel north = new JPanel();//这里是边框布局,分东南西北中五块。
    north.setPreferredSize(new Dimension(0,30));//设置我们的北边框宽度是30
    dr.add(north,BorderLayout.NORTH);//将我们的边框加入到窗体上
    
    JPanel center = new JPanel();//这里是边框布局,分东南西北中五块。
    dr.add(center,BorderLayout.CENTER);//将我们的中部加入到窗体上
    center.setBackground(Color.WHITE);
//添加按钮
        JButton btn = new JButton("Line");//画直线的按钮
        north.add(btn);
        
        JButton btn1 = new JButton("Rect");//画矩形的按钮
        north.add(btn1);
        
        JButton btn2 = new JButton("Roun");//画圈的按钮
        north.add(btn2);
        
        JButton btn3 = new JButton("Oval");//画填充圆的按钮
        north.add(btn3);
        
        JButton btn4 = new JButton();
        btn4.setBackground(Color.RED);    //设置颜色的按钮
        btn4.setPreferredSize(new Dimension  (40,30));
        north.add(btn4);
		
        JButton btn5 = new JButton();
        btn5.setBackground(Color.BLUE);   //设置颜色的按钮
        btn5.setPreferredSize(new Dimension  (40,30));
        north.add(btn5);
        
        dr.setVisible(true);//使窗体可见


        //创建监听器
        DrawListener drawL = new DrawListener();//鼠标监听器
        BtnListener btnListener = new BtnListener();//动作监听器
        //获取窗体的画布
        drawL.g= center.getGraphics();
        
        //添加监听器
		center.addMouseListener(drawL);
		btn.addActionListener(btnListener);
		btn1.addActionListener(btnListener);
		btn2.addActionListener(btnListener);
		btn3.addActionListener(btnListener);
		btn4.addActionListener(btnListener);
		btn5.addActionListener(btnListener);
		
        //将动作监听器的对象传给鼠标监听器
		drawL.btn = btnListener;
		btnListener.g=drawL.g;
}

//习惯性的添加主函数
public static void main(String[] args){
DrawUI ui = new DrawUI();
ui.showUI();
}
}

然后我们的画板就完成啦!
看看效果。
在这里插入图片描述
上面那个滑杆也是一个组件,我后来加着玩的,方法没写在上面,大家可以不用理会,然后掌握了方法,我们就可以自己做下去,画图板还有什么想要的的功能,大家都可以自己动手实现。
over~

发布了13 篇原创文章 · 获赞 1 · 访问量 305

猜你喜欢

转载自blog.csdn.net/Alagagaga/article/details/103260590