Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 638|回复: 0

Java程序:二维码生成器,行加入一个按钮,如何修改代码?

[复制链接]

该用户从未签到

发表于 2014-5-4 15:54:07 | 显示全部楼层 |阅读模式
10Java金币
大家好~ 我现在刚刚接触java,我在网上找到了一个二维码生成器的代码,运行的结果如图,我想在红色的画圈部位加一个具有打印功能的按钮,使其可以打印出生成的二维码,应该怎么修改我的代码?
package com.qrcode.test;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
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 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 void initUI(){
  gbl = new GridBagLayout();
  gbc = new GridBagConstraints();
  mainf = new JFrame("二维码生成器");
  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("点击我生成二维码 ");
  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.lightGray);
  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);
}
}

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2024-4-25 23:45 , Processed in 0.369471 second(s), 46 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表