如何用java创建一个画图板(一)

先让我展示一下最终成果

准备工作 :

在这里我使用的编译软件是IntelliJ IDEA Community Edition 2024.3.1.1具体的安装过程可从网上参考。

1.首先创建一个名为“画图板”的文件。

 鼠标右键点击src,再选择Package,命名为画图板。

2.创建一个名为“DrawPad”的Java Class

也是鼠标右键点击画图板,再选择Java Class,命名为DrawPad。

3.再创建一个名为“DrawListen”的Java Class

也是鼠标右键点击画图板,再选择Java Class,命名为DrawListen。

创建一个窗体:

package 画图板;
import javax.swing.*;
import java.awt.*;

public class DrawPad {
    public void showUI(){
    }

    public static void main(String[] args) {
        DrawPad dp=new DrawPad();
        dp.showUI();
    }
}

首先建立一个框架,就是创建一个名为“showUI”的函数public void showUI(),以及一个主函数

public static void main(String[] args)。

在主函数中创建DrawPad的对象dp,并调用showUI函数显示结果。

接下来就是在showUI函数中写有关窗体的具体代码。

    public void showUI(){
        JFrame jf=new JFrame();
        jf.setTitle("画图板");//标题
        jf.setSize(800,600);//窗体大小
        jf.setLocationRelativeTo(null);//窗体相对位置
        jf.setDefaultCloseOperation(3);//点击关闭窗体后退出程序
        jf.setVisible(true);//使窗体可视化
 
    }

创建一个JFrame的对象jf,使用JFrame自带的各种函数setTitle()、setSize()、setLocationRelativeTo()等等。

jf.setTitle("画图板") 窗体的标题为画图板
jf.setSize(800,600) 设定窗体的尺寸为800*600
jf.setLocationRelativeTo(null) 窗体的位置居中
jf.setDefaultCloseOperation(3) 关闭窗体退出程序
jf.setVisible(true) 窗体可视化

结果:

创建一个鼠标监听器 :

要想使鼠标能够在窗体中实现画画功能,就要创建一个鼠标监听器。

    public void showUI(){
        JFrame jf=new JFrame();
        jf.setTitle("画图板");//标题
        jf.setSize(800,600);//窗体大小
        jf.setLocationRelativeTo(null);//窗体相对位置
        jf.setDefaultCloseOperation(3);//点击关闭窗体后退出程序
        jf.setVisible(true);//使窗体可视化

        Graphics g=jf.getGraphics();

        DrawListen dl=new DrawListen();
        dl.addG(g);
        jf.addMouseListener(dl);
    }

Graphics 类提供了许多用于绘制图形和文本的方法。

在showUI函数中继续创建Graphics的对象g,Graphics g=jf.getGraphics()

DrawListen dl=new DrawListen() 创建监听器dl

jf.addMouseListener(dl); 在窗体中加入监听器dl

到此DrawPad中的代码已经全部写完了,接下来写DrawListen中的具体代码。

在DrawPad中我们创建了一个DrawListen的对象,而DrawListen的具体代码还没写。

在public class DrawListen加上implements MouseListener

 用鼠标选择MouseListener,点击黄色小灯泡,点击Implenment methods,点击OK,就会出现MouseListener自带的很多方法。

package 画图板;

import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class DrawListen implements MouseListener {
    Graphics g;
    int x1,x2,y1,y2;
    public void addG(Graphics g){
        this.g=g;
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println("鼠标在窗体上点击了");
    }

    @Override
    public void mousePressed(MouseEvent e) {
        System.out.println("鼠标在窗体上按下了");
        x1=e.getX();
        y1=e.getY();
        System.out.println("x1="+x1+"y1="+y1);
    }

    @Override
    public void mouseReleased(MouseEvent e) {
        System.out.println("在窗体上松开了");
        x2=e.getX();
        y2=e.getY();
        System.out.println("x2="+x2+"y2="+y2);
        g.drawLine(x1,y1,x2,y2);//连接两点形成一条直线

    }

    @Override
    public void mouseEntered(MouseEvent e) {
        System.out.println("鼠标进入到窗体上");
    }

    @Override
    public void mouseExited(MouseEvent e) {
        System.out.println("鼠标离开窗体");
    }
}
public void addG(Graphics g){
        this.g=g;
    }

这段代码能够实现在DrawListen中调用DrawPad中的Graphics的对象g。

 

mouseClicked是点击

mousePressed是按下

mouseReleased是松开

mouseEntered是进入

mouseExited是离开

在mousePressed中获取鼠标的起始坐标x1,y1

在mouseReleased中获取鼠标的终点坐标x2,y2

并用g.drawLine(x1,y1,x2,y2)将两点连为直线

要想画出一个矩形可以用drawRect函数 ,public void drawRect(int x, int y, int width, int height)

    public void mouseReleased(MouseEvent e) {
        System.out.println("在窗体上松开了");
        x2=e.getX();
        y2=e.getY();
        System.out.println("x2="+x2+"y2="+y2);

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

要想画出一个圆可以用 drawOval函数,public void drawOval(int x, int y, int width, int height)

    public void mouseReleased(MouseEvent e) {
        System.out.println("在窗体上松开了");
        x2=e.getX();
        y2=e.getY();
        System.out.println("x2="+x2+"y2="+y2);

        g.drawOval(Math.min(x1,x2),Math.min(y1,y2),Math.abs(x1-x2),Math.abs(y1-y2));//画圆
    }

至于更多的创意图形,你可以自己去尝试。

以上就是本篇文章的全部内容了,希望各位能多多支持。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值