Java实现画图板画一只百度熊
笔记:
1、界面
2、鼠标监听器
鼠标按下:
获取坐标
鼠标松开:
获取坐标
画线
3、变量的作用域:在自己所属的代码块中。
局部变量和属性同名,则以局部变量优先显示。
4、Graphics : 提供了绘图相关的方法
需要绘图,则根据绘图区域的组件调用getGraphics()方法获取Graphics的对象。
调用getGraphics方法一定要在界面可见之后。
目标:
1、绘制一个百度熊。目标如图:
代码块如下
DrawUI.java
import java.awt.Graphics;
import java.awt.Button;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFrame;
public class DrawUI {
//显示界面的方法
public void showUI() {
//创建窗体对象
JFrame drawFrame = new JFrame();
//设置属性
drawFrame.setSize(1000, 600);
drawFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
drawFrame.setLocationRelativeTo(null);
FlowLayout flowl = new FlowLayout();//流式布局
drawFrame.setLayout(flowl);
Button login1 = new Button("图形1");//建立图形选择按钮
Dimension size = new Dimension(360,35);//大小
login1.setPreferredSize(size);
drawFrame.add(login1);
Button login2 = new Button("图形2");//建立图形选择按钮
login2.setPreferredSize(size);
drawFrame.add(login2);
/*pic1,pic2是想实现两个按钮去切换图形,暂时还没实现*/
DrawListener2 loginL = new DrawListener2();//设置监听器
DrawListener2 loginR = new DrawListener2();//设置监听器
login1.addActionListener(loginL);//给按钮加监听器
login2.addActionListener(loginR);//给按钮加监听器
loginL.pic1 = login1;//给监听器赋值
loginR.pic2= login2;//赋值
//添加监听器
DrawListener drawL = new DrawListener();
drawFrame.addMouseListener(drawL);
//设置可见
drawFrame.setVisible(true);
//获取画布
Graphics g = drawFrame.getGraphics();
//给监听器的属性赋值
drawL.setGraphics(g);
drawFrame.setVisible(true);
}
//主方法
public static void main(String[] args) {
//创建界面对象
DrawUI ui = new DrawUI();
//显示界面
ui.showUI();
}
}
监听器部分
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
这三种方法虽然没有实现,但是要写出来
DrawListener.java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class DrawListener implements MouseListener{
//记录坐标的信息
int x1,y1,x2,y2;
//画布
private Graphics g;
//设置画布的方法
public void setGraphics(Graphics g) {
this.g = g;
}
public void mousePressed(MouseEvent e) {
//获取坐标
x1 = e.getX();
y1 = e.getY();
}
public void mouseReleased(MouseEvent e) {
//获取坐标
x2 = e.getX();
y2 = e.getY();
//画线
//g.drawLine(x1, y1, x2, y2);
//画椭圆
//g.fillOval(x1, y1, 110, 100);
//画熊
//头
Color color = new Color(224,178,142);
g.setColor(color);
g.fillOval(x1, y1, 110, 100);
//眼睛
g.setColor(Color.WHITE);
g.fillOval(x1+20, y1+32, 18, 24);
g.setColor(Color.WHITE);
g.fillOval(x1+75, y1+32, 18, 24);
//眼黑
g.setColor(Color.BLACK);
g.fillOval(x1+23, y1+36, 10, 14);
g.setColor(Color.BLACK);
g.fillOval(x1+78, y1+36, 10, 14);
//嘴巴
Color colorhui =new Color(248,246,229);
g.setColor(colorhui);
g.fillOval(x1+37, y1+50, 40, 30);
//鼻子
g.setColor(Color.BLACK);
g.fillOval(x1+53, y1+50, 9, 9);
//左耳朵
g.setColor(color);
g.fillOval(x1+3, y1+3, 22, 22);
//右耳朵
g.setColor(color);
g.fillOval(x1+84, y1+3, 22, 22);
//输出
System.out.println("起点("+x1+","+y1+"),终点("+x2+","+y2+")");
}
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
}
DrawListener2.java
//此部分还只做了两个按钮,还没有具体实现
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.Button;
import java.awt.Color;
public class DrawListener2 implements ActionListener{
Button pic1;
Button pic2;
public void actionPerformed(ActionEvent e) {
// pic1.setBackground(Color.green);
// pic2.setBackground(Color.yellow);
}
}
效果如图
这样就可以画出一只百度熊了。绘制百度熊比较容易,掌握好椭圆的绘制方法与各个椭圆的坐标就好了。