文档章节

java Swing 实现二维码生成器

开源中国首席光头
 开源中国首席光头
发布于 2016/08/16 16:34
字数 311
阅读 83
收藏 2

发现网上有个很好的接口,用来生成二维码,于是做了一个简单的DEMO,希望对新手有帮助。

下面是项目目录,很简单,就2个类:

//Main.java

package main;

import java.awt.Frame;

public class Main extends Frame {

    private static final long serialVersionUID = 1L;

    public static void main(String[] args) throws Exception {
        new MyFrame().display();
    }
}

 

//MyFrame.java

package main;

import java.awt.BorderLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.MalformedURLException;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class MyFrame extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel imagePanel;
    private JPanel editPanel;
    private JButton okBtn;
    private JButton clearBtn;
    private JTextField msgText;
    JLabel imageLabel;
    ImageIcon imageIcon;

    public MyFrame() throws Exception {
        this.setTitle("二维码生成器");
        this.setSize(500, 600);
        Toolkit kit = Toolkit.getDefaultToolkit();
        this.setLocation((int) (this.getWidth() / 2 - kit.getScreenSize().getWidth() / 2),
                (int) (this.getHeight() / 2 - kit.getScreenSize().getHeight() / 2));
        this.setLocationRelativeTo(null);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setResizable(false);

        imagePanel = new JPanel();
        imageLabel = new JLabel();

        imagePanel.add(imageLabel);
        this.getContentPane().add(new JLabel("二维码生成器"), BorderLayout.NORTH);
        this.getContentPane().add(imagePanel, BorderLayout.CENTER);

        editPanel = new JPanel();
        msgText = new JTextField(30);
        msgText.setText("在这里输入你想显示的内容");
        okBtn = new JButton("确定");
        clearBtn = new JButton("清空");
        editPanel.add(msgText, BorderLayout.WEST);
        editPanel.add(okBtn, BorderLayout.CENTER);
        editPanel.add(clearBtn, BorderLayout.EAST);
        this.getContentPane().add(editPanel, BorderLayout.SOUTH);
        clearBtn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                msgText.setText("");
            }
        });
        okBtn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    imageLabel
                            .setIcon(new ImageIcon(new URL("http://qr.topscan.com/api.php?text=" + msgText.getText())));
                    System.out.println("http://qr.topscan.com/api.php?text=" + msgText.getText());
                } catch (MalformedURLException e1) {
                    JOptionPane.showInternalMessageDialog(MyFrame.this, "出错了", "二维码生成出错,请稍后再试!",
                            JOptionPane.INFORMATION_MESSAGE);
                }

            }
        });
    }

    public void display() {
        this.setVisible(true);
    }
}


 

© 著作权归作者所有

共有 人打赏支持
开源中国首席光头
粉丝 13
博文 24
码字总数 30914
作品 1
福州
程序员
ZXing读写二维码,桌面和手机的不同用法

虽然ZXing是用Java实现的Barcode开源库,但是并不代表桌面上实现的Barcode应用在手机上也可以直接使用。因为Android的Java接口有很多是不同的。这里分享下Java Barcode生成和读取的不同用法。...

yushulx
2015/08/18
0
0
Java实现二维码QRCode的编码和解码

周末试用下Android手机的二维码扫描软件,扫描了下火车票、名片等等,觉得非常不错很有意思的。当然Java也可以实现这些,现在就分享下如何简单用Java实现二维码中QRCode的编码和解码(可以手...

Oconnor
2012/09/12
0
1
国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

强子哥哥
2015/11/16
0
1
推荐!国外程序员整理的Java资源大全

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

huntering
2015/01/13
0
0
构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并

构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配...

enosh
2015/01/09
0
2

没有更多内容

加载失败,请刷新页面

加载更多

Shiro | 实现权限验证完整版

写在前面的话 提及权限,就会想到安全,是一个十分棘手的话题。这里只是作为学校Shiro的一个记录,而不是,权限就应该这样设计之类的。 Shiro框架 1、Shiro是基于Apache开源的强大灵活的开源...

冯文议
今天
1
0
linux 系统的运行级别

运行级别 运行级别 | 含义 0 关机 1 单用户模式,可以想象为windows 的安全模式,主要用于修复系统 2 不完全的命令模式,不含NFS服务 3 完全的命令行模式,就是标准的字符界面 4 系统保留 5 ...

Linux学习笔记
今天
2
0
学习设计模式——命令模式

任何模式的出现,都是为了解决一些特定的场景的耦合问题,以达到对修改封闭,对扩展开放的效果。命令模式也不例外: 命令模式是为了解决命令的请求者和命令的实现者之间的耦合关系。 解决了这...

江左煤郎
今天
3
0
字典树收集(非线程安全,后续做线程安全改进)

将500W个单词放进一个数据结构进行存储,然后进行快速比对,判断一个单词是不是这个500W单词之中的;来了一个单词前缀,给出500w个单词中有多少个单词是该前缀. 1、这个需求首先需要设计好数据结...

算法之名
昨天
15
0
GRASP设计模式

此文参考了这篇博客,建议读者阅读原文。 面向对象(Object-Oriented,OO)是当下软件开发的主流方法。在OO分析与设计中,我们首先从问题领域中抽象出领域模型,在领域模型中以适当的粒度归纳...

克虏伯
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部