java 7实战_Java7:Java实战——画图板

不知道大家看了Java6后有没有做出来一个简单的登录界面,今天我们要做的是一个简单的画图板,在上面实现画不同图形的功能。我们可以先打开自己电脑的画图板

可以看到画图板是一个界面,上面图形按钮,点击不同的图形按钮可以画不同的图形,有颜色按钮,点击不同颜色的按钮就可以画出不同颜色的图形;有一块画布,可以在上面进行画图操作……

因此,一个功能简单的画图板,其实实现起来很复杂,需要用到事件监听、界面开发等内容。实现一个画图程序一般需要很多类:

JFrame窗体容器类

JButton按钮元素组件类

FlowLayout流式布局类

Graphics画笔类:提供各种绘制图形的方法

Color颜色类:提供颜色

ActionListener动作事件接口,将监听到的内容交给他处理

MouseListener鼠标事件接口:提供处理鼠标按下,释放,点击,进入和离开动作的处理方法

MouseMotionListener鼠标移动事件接口:提供处理鼠标移动和拖动动作的处理方法

……………………

下图是一个较简单的画图板,我们只需实现画一部分图形的功能即可

我们需要创建2个类:画板类(DrawPanel1)和监听类(DrawListener1)。在画板类中我们用开发界面的方法创建一个具有不同按钮的窗体,然后给按钮和窗体添加监听器,再调用窗体的画笔,使之能在窗体上画图;在监听其上我们通过监听点击不同的按钮,使用画笔Graphics中提供画图形的方法来画出不同形状或颜色的图形。

首先定义DrawPanel1类:

public class DrawPanel1{

//定义一个显示界面的方法

public void showUI(){

//创建一个窗体

JFrame drawFrame = new JFrame();

//设置窗体的 大小、位置、标题

drawFrame.setSize(1500, 1000);

drawFrame.setLocationRelativeTo(null);

drawFrame.setTitle("画图板V1.0");

//设置一个数组,显示直线,椭圆等

String a[] = {"直线","椭圆"};

for(int i = 0;i

//创建多个按钮对象,设置宽和高

javax.swing.JButton jbu = new javax.swing.JButton(a[i]);

java.awt.Dimension d1 = new java.awt.Dimension(100,30);

jbu.setPreferredSize(d1);

//按钮加到窗体上

drawFrame.add(jbu);

//给按钮添加监听

jbu.addActionListener(drawL);

//给窗体添加监听器

drawFrame.addMouseListener(drawL);

//设置窗体可见

drawFrame.setVisible(true);

//获取窗体的画笔

Graphics g = drawFrame.getGraphics();

//调用监听器设置画笔的方法

drawL.setG(g);

}

//定义主方法

public static void main(String[] args){

//创建DrawPanel1类的对象,调用showUI()方法

DrawPanel1 drawPanel = new DrawPanel1();

drawPanel.showUI();

}

}

定义监听类DrawListener1:

public class DrawListener1 implements MouseListener,ActionListener{

private int x1,x2,y1,y2;

private Graphics g;

private String type;

private Color color;

//设置画笔的方法

public void setG(Graphics argG){

g = argG;

}

//重写ActionListener中的抽象方法,点击按钮的时候调用

public void actionPerformed(ActionEvent e){

JButton button = (JButton) e.getSource();// 获取事件源对象

String text = button.getText();

if(text.equals(null) || text.equals("")){

color = button.getBackground();

System.out.println("color = " + color);

g.setColor(color);

}

else {

type = button.getText();// 获取按钮上的文字信息

System.out.println("text = " + text);

}

}

//重写MouseListener中的抽象方法

public void mouseClicked(MouseEvent e){

System.out.println("鼠标点击");

}

public void mousePressed(MouseEvent e){

System.out.println("鼠标按下");

//记录鼠标按下的位置

x1 = e.getX();

y1 = e.getY();

}

public void mouseReleased(MouseEvent e){

System.out.println("鼠标松开");

//记录鼠标松开的位置

x2 = e.getX();

y2 = e.getY();

//调用画笔对象,点击不同的按钮绘制不同的图形

if("直线".equals(type)){

//画直线

g.drawLine(x1, y1, x2, y2);

}

else

if("椭圆".equals(type)){

g.drawOval(Math.min(x1, x2),Math.min(y1, y2), Math.abs(x1 - x2), Math.abs(y1 - y2));

}

public void mouseEntered(MouseEvent e){

System.out.println("鼠标进入");

}

public void mouseExited(MouseEvent e){

System.out.println("鼠标离开");

}

}

MouseListener接口中有5个抽象方法 public void mouseClicked(MouseEvent e); public void mousePressed(MouseEvent e); public void mouseReleased(MouseEvent e); public void mouseEntered(MouseEvent e); public void mouseExited(MouseEvent e);

DrawListener1实现了这个接口,所以必须重写接口内的所有抽象方法。

在发生鼠标按下这个操作的时候,监听器记录下鼠标发生按下操作时的坐标(x1,y1),在发生鼠标松开这个操作的时候,监听器记录下鼠标发生松开操作时的坐标(x2,y2)。然后通过画笔g调用Graphic类中画直线(drawLine)和画椭圆(drawOval)的方法,将对应的参数传过去,就可以画直线和椭圆了。

我们还可以用画图板画更复杂的图形(比如任意多边形,立体矩形等),画这些图形的方法Graphics类中并没有提供,这就需要我们开动脑筋,尽量利用Graphics类中的某些方法来解决了。读者可以先百度一下用Graphics类画图的方法,小编也会在以后的博客中详细介绍,所以,

关注小编不吃亏!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值