美颜相机最基本的功能应当能加载出对应的图片,在此基础上对图片进行一系列操作,今天我们就完成这最基本的一步。
一、显示界面
第一步需要构造一个方法创建一个界面对象,设置界面的长宽大小、标题,并将其居中显示、可视化等。
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)同时给多个属性初始化
每个类都有一个默认的无参构造方法,当自己定义构造方法,那么默认的无参构造方法 就会被替代。