java Swing 实现二维码生成器

本文介绍了一个使用Java实现的简单二维码生成器。通过调用在线API,用户可以在GUI界面上输入文本并即时生成对应的二维码图片。

发现网上有个很好的接口,用来生成二维码,于是做了一个简单的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);
    }
}


 

转载于:https://my.oschina.net/xiaoershaoye/blog/733529

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值