一,界面创建
要建立一个画画板,首先要创建一个界面。
package com.qdl0924;
import java.awt.*;//导入工具包
import javax.swing.*;
JFrame jf = new JFrame();//创建窗体
jf.setTitle("画画板");//命名
jf.setSize(1000, 1000);//尺寸
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);//默认关闭操作
FlowLayout fl = new FlowLayout();//创建流式布局操作
jf.setLayout(fl);//在“jf”窗体中加入使用流式布局操作
其次,给单调的界面里加入按钮键,方便绘图(当然要给按钮键添加动作监听器)
String[] btnstr = {"直线", "三角形", "等腰三角形", "矩形", "圆形", "实心圆形", "多边
形"};//创建一个数组
for (int i = 0; i < btnstr.length; i++) {
JButton btn = new JButton(btnstr[i]);//创建对应按钮
jf.add(btn);//在“jf”窗体中添加按钮
btn.addActionListener(dl);//给按钮添加动作监听器
}
Color[] colors = {Color.black, Color.RED, Color.BLUE,
Color.YELLOW, Color.CYAN, Color.LIGHT_GRAY
, Color.CYAN, Color.MAGENTA};
for (int n = 0; n < colors.length; n++) {
JButton btnc = new JButton("c");
btnc.setBackground(colors[n]);//设置按钮背景颜色
jf.add(btnc);
btnc.addActionListener(dl);
}
jf.setVisible(true);//显示组件
jf.setResizable(true);//可调节大小
jf.setLocationRelativeTo(null);//窗体显示位置于屏幕中间
二,鼠标监听器
在图形绘制过程中,不得不提到鼠标监听器(MouseListener),用来监听鼠标的操作。现在,来看看鼠标监听器是怎样用的。
1.创建监听器类DrawListener并实现接口
public class DrawListener implements MouseListener{
}
2.复制MouseListener里面的方法到DrawListener下面
public class dffd implements MouseListener{
@Override
public void mouseClicked(MouseEvent e) {//点击
}
@Override
public void mousePressed(MouseEvent e) {//按下
}
@Override
public void mouseReleased(MouseEvent e) {//释放
}
@Override
public void mouseEntered(MouseEvent e) {//鼠标进入窗体
}
@Override
public void mouseExited(MouseEvent e) {//鼠标离开窗体
}
}
3.给你的方法里写好代码
4.添加鼠标监听器——这里就是窗体添加鼠标监听器,在类中可视化后添加
DrawListener dl = new DrawListener();//创建一个DrawListener对象
jf.addMouseListener(dl);//给窗体添加鼠标监听器
5.在窗体在获取画笔
Graphics g = jf.getGraphics();//在窗体中获取画笔
6.将画笔传到监听器中(使得监听器中也能用到画笔画图)
dl.g = g;
7.在DrawListener中定义g
public class DrawListener implements MouseListener, ActionListener {//创建类来实现接口
Graphics g;//定义g的属性
三,一些简单图像的绘画
一,直线
1.首先在鼠标按下的时候获取一个坐标(获取坐标的格式如下)
@Override
public void mousePressed(MouseEvent e) {//按下
x1=e.getX();
y1=e.getY();
}
2.在鼠标释放后获取一个坐标
@Override
public void mouseReleased(MouseEvent e) {//释放
x2=e.getX();
y2=e.getY();
3.在获取完两个点的坐标后画出直线
@Override
public void mouseReleased(MouseEvent e) {//释放
x2=e.getX();
y2=e.getY();
g.drawLine(x1,y1,x2,y2);
注:g.drawLine();进行画线时,()内依次填两个点的坐标
二,矩形
矩形所需要的数据实际上也只有两个点的数据,只需在直线基础上改动数据即可
g.drawLine(x1,y1,x2,y1);
g.drawLine(x1,y1,x1,y2);
g.drawLine(x2,y1,x2,y2);
g.drawLine(x1,y2,x2,y2);
三,三角形
三角形是由三个顶点以及三条边组成的,所以要画出三角形,首先要确定三个顶点,然后画出三条边。因此,其代码应该与点击有关,具体如下。
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("点击");
System.out.println("x:" + x + "y:" + y);
if (shapeType.equals("三角形")) {//点击三角形按钮
if (c == 0) {//点击第一下
x3 = e.getX();
y3 = e.getY();//获取第一个点的坐标
c++;
} else if (c == 1) {//点击第二下
x4 = e.getX();
y4 = e.getY();//获取第二个点的坐标
c++;
g.drawLine(x3, y3, x4, y4);//画出一条边
} else if (c == 2) {
x5 = e.getX();
y5 = e.getY();//获取第三个点的坐标
g.drawLine(x3, y3, x5, y5);
g.drawLine(x4, y4, x5, y5);//画出其余两条边
c = 0;//前一个三角形画完之后让c=0,以便下一个三角形的绘制
}
四,实现按钮键的功能
在添加按钮键后,为了使点击按钮键后可以绘制不同图形,需进行以下操作
1.接收按钮键内的文本
2.获取按钮键上的文本
3.判断文本内容并实现相应图形的绘制
package com.qdl0924;
import java.awt.*;//引入需要调用的包文件
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
public class DrawListener implements MouseListener, ActionListener {//创建类来实现接口
Graphics g;//定义g的属性
int x1, y1, x2, y2, x3, y3, x4, y4, x5, y5;
int c;
String shapeType = "直线";// 接收按钮上的文本
@Override
public void actionPerformed(ActionEvent e) {
// ac: 按钮上的文本
String ac = e.getActionCommand();//获取按钮键上的文本
if(ac.equals("c")){
JButton btn = (JButton) e.getSource();//获取按钮事件
Color color = btn.getBackground();//获取按钮背景颜色
g.setColor(color);//设置画笔颜色
}else shapeType = ac;
}
@Override
public void mouseReleased(MouseEvent e) {
x2=e.getX();
y2=e.getY();
if(shapeType.equals("直线")){
g.drawLine(x1,y1,x2,y2);
} else if (shapeType.equals("矩形")) {
g.drawLine(x1,y1,x2,y1);
g.drawLine(x1,y1,x1,y2);
g.drawLine(x2,y1,x2,y2);
g.drawLine(x1,y2,x2,y2);
} else if (shapeType.equals("圆形")) {
g.drawOval(x1,y1,x2-x1,y2-y1);
} else if (shapeType.equals("实心圆形")){
Color c = new Color(100,100,200);
g.setColor(c);
g.fillOval(x1,y1,x2-x1,y2-y1);
} else if (shapeType.equals("等腰三角形")) {
g.drawLine(x1,y2,x2,y2);
g.drawLine((x1+x2)/2,y1,x1,y2);
g.drawLine((x1+x2)/2,y1,x2,y2);
}
}
本文围绕Java开发画画板展开,介绍了开发流程。先创建界面并添加按钮键与动作监听器,接着阐述鼠标监听器的使用方法,包括创建监听器类、复制方法、添加监听器等。还说明了直线、矩形、三角形等简单图像的绘画方式,最后讲解了实现按钮键绘制不同图形功能的操作。

791

被折叠的 条评论
为什么被折叠?



