2025年3月30日 星期日 甲辰(龙)年 月廿九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Java

java 创建二维码 并加载显示到窗口

时间:10-30来源:作者:点击数:35

项目示范:

  • 链接:https://pan.baidu.com/s/1RFIeMh5zJwT9tUQrYOO2hA
  • 提取码:1111
1、创建二维码

使用zxing包创建二维码

maven依赖:

  • <dependency>
  • <groupId>com.google.zxing</groupId>
  • <artifactId>javase</artifactId>
  • <version>3.3.3</version>
  • </dependency>

代码:

  • import com.google.zxing.BarcodeFormat;
  • import com.google.zxing.WriterException;
  • import com.google.zxing.client.j2se.MatrixToImageWriter;
  • import com.google.zxing.common.BitMatrix;
  • import com.google.zxing.qrcode.QRCodeWriter;
  • import java.nio.file.Path;
  • public class QrcodeUtils {
  • /**
  • *生成二维码方法
  • * @param content 内容
  • * @param file 路径
  • */
  • public static void createQrcode(String content, Path file) throws Exception {
  • try {
  • QRCodeWriter qrCodeWriter = new QRCodeWriter();
  • BitMatrix bm = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, 400, 400);
  • MatrixToImageWriter.writeToPath(bm, "png", file);
  • } catch (WriterException e) {
  • e.getStackTrace();
  • }
  • }
  • }
2、使用AWT加载显示

使用 定时器Timer实现了swing窗口的标题每秒更新一次,时间使用完后显示二维码的窗口关闭,并将创建的二维码删除

  • import javax.swing.*;
  • import java.awt.*;
  • import java.util.Timer;
  • import java.util.TimerTask;
  • public class QRCodeFrame extends JFrame {
  • private Timer updateTitleTimer = new Timer();
  • private Integer time = 180;
  • private String qrcode;
  • //外部调用这个函数加载窗口,显示二维码
  • public void launchFrame(String qrcode) {
  • this.qrcode = qrcode;
  • updateFrameTitle();
  • this.setVisible(true);
  • this.setSize(420, 440);//大小
  • this.setLocation(100, 100);//左上角位置
  • //指定要从本地加载的二维码的路径
  • JPanel jPanel = new QRCodeFrameImage(this.qrcode);
  • this.getContentPane().add(jPanel);
  • //设置始终在窗体层最上面
  • this.setAlwaysOnTop(true);
  • }
  • public void closeWindows(){
  • //setVisible方法仅仅隐藏窗体,而dispose方法是关闭窗体,并释放一部分资源。
  • this.dispose();
  • if(null != updateTitleTimer){
  • updateTitleTimer.cancel();
  • updateTitleTimer=null;
  • }
  • }
  • private void updateFrameTitle(){
  • if(null == updateTitleTimer){
  • return;
  • }
  • //定时器中发布任务,每1000ms执行一次,执行后递归调用自己
  • updateTitleTimer.schedule(new TimerTask() {
  • public void run() {
  • time--;
  • if(time<1){
  • //关闭窗口
  • closeWindows();
  • //将创建的二维码删除
  • deleteFile(qrcode);
  • }
  • setTitle(String.format("请使用微信扫描二维码,%s秒后自动关闭",time));
  • updateFrameTitle();
  • }
  • }, 1000);
  • }
  • public void deleteFile(String filePath){
  • File file = new File(filePath);
  • if(file.exists()){
  • file.delete();
  • }
  • }
  • public int getTime() {
  • return time;
  • }
  • }

Panel 绘制二维码到窗体

  • import javax.swing.*;
  • import java.awt.*;
  • public class QRCodeFrameImage extends JPanel {
  • private String imagePath;
  • public QRCodeFrameImage(String imagePath) {
  • this.imagePath = imagePath;
  • }
  • public void paint(Graphics g) {
  • super.paint(g);
  • ImageIcon icon = new ImageIcon(imagePath);
  • g.drawImage(icon.getImage(), 0, 0, 400, 400, this);
  • }
  • }
3、运行结果
在这里插入图片描述
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐