美颜相机(1)显示画图界面,绘制自定义图片

美颜相机最基本的功能应当能加载出对应的图片,在此基础上对图片进行一系列操作,今天我们就完成这最基本的一步。

一、显示界面

第一步需要构造一个方法创建一个界面对象,设置界面的长宽大小、标题,并将其居中显示、可视化等。

public void initUI(){
        JFrame jf=new JFrame();
        jf.setSize(1000,600);
        jf.setTitle("美颜相机");
        jf.setLocationRelativeTo(null);
        jf.setDefaultCloseOperation(3);
        jf.setVisible(true);

    }

jf.setDefaultCloseOperation(3); 用于设置 JFrame 关闭时的默认操作。3 对应的常量是 JFrame.EXIT_ON_CLOSE,意味着当用户点击关闭按钮时,程序会退出。

二、添加画笔

有了界面后,需要添加画笔才能在界面上绘制图片,注意从窗体上获取画笔,一定要在可视化之后。

Graphics g=jf.getGraphics();

三、添加鼠标监听器

添加鼠标监听器后才能在点击鼠标时运用画笔绘制出图片。此时需要新建一个类,为声明MouseListener接口。新建的类需要重写MouseLIstener中的所有方法。

这时还需要将前一个类中的画笔对象传递过来

public class PixelMouse implements MouseListener {
    private Graphics g;
    public PixelMouse(Graphics g){
        this.g=g;
    }

    @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) {

    }
}
 PixelMouse mouse=new PixelMouse(g);
 jf.addMouseListener(mouse);

再在mouseClicked方法中创建一个ImageIconl类的对象,包含所要绘制图片的地址,再调用画笔的drawImage方法绘制出图片。

public void mouseClicked(MouseEvent e) {
        System.out.println("点击");
        int x=e.getX();
        int y=e.getY();
        ImageIcon image=new ImageIcon("D:\\元气壁纸缓存\\img\\11.jpg");
        g.drawImage(image.getImage(),x,y,null);


    }

四、运行

最后,在主函数中创建对象,调用方法,即可生成界面,鼠标再点击一下即可绘制所选中的图片在该界面上。

public static void main(String[] args) {
        PixelUI ui=new PixelUI();
        ui.initUI();
    }

我的运行结果如下

五、代码

package Pixel240717;
import javax.swing.*;
import java.awt.*;

public class PixelUI {
    public void initUI(){
        JFrame jf=new JFrame();
        jf.setSize(1000,600);
        jf.setTitle("美颜相机");
        jf.setLocationRelativeTo(null);
        jf.setDefaultCloseOperation(3);
        jf.setVisible(true);
        Graphics g=jf.getGraphics();
        PixelMouse mouse=new PixelMouse(g);
        jf.addMouseListener(mouse);

    }

    public static void main(String[] args) {
        PixelUI ui=new PixelUI();
        ui.initUI();
    }
}


package Pixel240717;

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

public class PixelMouse implements MouseListener {
    private Graphics g;
    public PixelMouse(Graphics g){
        this.g=g;
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        System.out.println("点击");
        int x=e.getX();
        int y=e.getY();
        ImageIcon image=new ImageIcon("D:\\元气壁纸缓存\\img\\11.jpg");
        g.drawImage(image.getImage(),x,y,null);


    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }
}

六、补充

普通方法:

public +返回值类型+方法名+(参数类型+对象名)+{方法体};

构造方法:

public+类名+(参数类型+对象名)+{方法体};

区别:(1)构造方法没有返回值类型;(2)构造方法名必须是类名。

构造方法的作用:(1)创建对象 (2)同时给多个属性初始化 

每个类都有一个默认的无参构造方法,当自己定义构造方法,那么默认的无参构造方法 就会被替代。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值