首页>代码>java swing做的二维码生成客户端>/QRcoder/src/cn/gd/pl/lan/main/QRGenerator.java
package cn.gd.pl.lan.main;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.UIManager;

import com.swetake.util.Qrcode;

public class QRGenerator {
	
	private static JFrame mainf;
	private static JPanel pannel;
	private static JTextArea input;
	private static ImagePannel output;
	private static JButton generat;
	private static GridBagLayout gbl;
	private static GridBagConstraints gbc;
	private static Graphics2D gs;
	private static BufferedImage bi;

	public static void main(String[] args) throws Exception {
		System.out.println(QRGenerator.class.getResource("/resources/fac.ico"));
		UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
	    JFrame.setDefaultLookAndFeelDecorated( true );
	    
		initUI();
	}

	public static void initUI(){
		gbl = new GridBagLayout();
		gbc = new GridBagConstraints();
		mainf = new JFrame("二维码生成器");
		mainf.setIconImage(Toolkit.getDefaultToolkit().getImage(QRGenerator.class.getResource("/resources/fac.png")));
		pannel = new JPanel(gbl);
		input = new JTextArea();
		output = new ImagePannel();
		generat = new JButton();
		
		generat.setText("生成二维码");
		generat.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				if(!"".equals(input.getText().trim()) && !(input.getText() == null)){
				bi = new BufferedImage(275, 275, BufferedImage.TYPE_INT_RGB);
				for(int i = 0 ; i < 275 ; i++)
					for(int j = 0 ; j < 275 ; j++)
						bi.setRGB(j, i, Color.WHITE.getRGB());
				gs = bi.createGraphics();
				gs.setColor(Color.BLACK);
				Qrcode qrcode = new Qrcode();
				qrcode.setQrcodeEncodeMode('B');//N A ...
				qrcode.setQrcodeErrorCorrect('M');//L M Q H
				qrcode.setQrcodeVersion(7);
				if((input.getText().trim().getBytes()).length > 0 && (input.getText().trim().getBytes()).length < 123){
				boolean[][] rest = qrcode.calQrcode(input.getText().trim().getBytes()); 
				for(int i = 0 ; i< rest.length ; i++){
					for(int j = 0 ; j < rest.length ; j++){
						if(rest[j][i])
							gs.fillRect(j * 6, i * 6, 6, 6);
					}
				}
				output.setBufferedImage(bi);
				output.repaint();
				File f = new File("c:\\qrcode.png");
				try {
					ImageIO.write(bi, "png", f);
					JOptionPane.showMessageDialog(mainf, new String("恭喜您,2维码生成成功咯!"), "结果提示", JOptionPane.INFORMATION_MESSAGE);
				} catch (IOException e) {
					JOptionPane.showMessageDialog(mainf, new String("很遗憾,2维码生成失败了唉!"), "结果提示", JOptionPane.ERROR_MESSAGE);
					e.printStackTrace();
				}
				}else{
					JOptionPane.showMessageDialog(mainf, new String("编码内容长度不能超过123个字符哦,亲!"), "输入提示", JOptionPane.WARNING_MESSAGE);
				}
			}else
				JOptionPane.showMessageDialog(mainf, new String("编码内容不能为空哦,亲!"), "输入提示", JOptionPane.WARNING_MESSAGE);
			}
		});
		
		gbc.gridx = 0;
		gbc.gridy = 0;
		gbc.weightx = 1;
		gbc.weighty = 1;
		gbc.gridwidth = 1;
		gbc.gridheight = GridBagConstraints.REMAINDER;
		gbc.fill = GridBagConstraints.BOTH;
		input.setLineWrap(true);
		input.setToolTipText("在此输入内容 :)");
		gbl.setConstraints(input, gbc);
		pannel.add(input);
		
		gbc.gridx = 1;
		gbc.gridy = 0;
		gbc.weightx = 1;
		gbc.weighty = 1;
		gbc.fill = GridBagConstraints.NONE;
		generat.setToolTipText("点击我生成二维码 :D");
		gbc.gridwidth = GridBagConstraints.RELATIVE;
		gbl.setConstraints(generat, gbc);
		pannel.add(generat);
		
		gbc.gridx = 2;
		gbc.gridy = 0;
		gbc.weightx = 265;//分配额外的水平空间
		gbc.weighty = 1;
		gbc.ipady = 100;
		output.setBackground(Color.darkGray);
		output.setToolTipText("二维码生成区域");
		gbc.fill = GridBagConstraints.BOTH;
		gbc.gridwidth = GridBagConstraints.REMAINDER;
		gbl.setConstraints(output, gbc);
		pannel.add(output);
		
		mainf.setResizable(false);
		mainf.setBounds(350, 300, 550, 305);
		mainf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainf.add(pannel);
		mainf.setVisible(true);
	}
	
}
最近下载更多
514423564  LV1 2022年10月11日
flygrass  LV12 2022年9月16日
一个好人520  LV10 2021年9月29日
ljw1989  LV1 2020年5月24日
jion1761  LV11 2020年4月14日
yangmg  LV1 2020年3月13日
上善_若水  LV3 2020年2月23日
398110326  LV2 2020年2月22日
wei112233  LV15 2020年2月2日
15838634741  LV18 2019年11月25日
最近浏览更多
lshlsh 2023年12月25日
暂无贡献等级
暂无贡献等级
luo110012  LV9 2023年5月17日
漫步的海星  LV4 2023年3月16日
mthouse 2022年11月28日
暂无贡献等级
514423564  LV1 2022年10月11日
crosa_Don  LV18 2022年9月22日
flygrass  LV12 2022年9月16日
猪皮怪 2022年6月12日
暂无贡献等级
yydsod  LV1 2022年6月5日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友