Siguiendo la secuencia de pasos para generar un código de barras con barcode4j, esta vez el desafio es hacerlo en un simple JFrame:
Ingredientes
- Una clase main, donde correr el pequeño jar, ésta llama a las siguientes.
- Una clase encargada de la generación del código de barras, que contenga un método que devuelva un File con la imagen.
- Otra clase encargada de la ventana, que reciba un File y lo ponga en una etiqueta dentro del marco.
La estructura del proyecto debería verse así: (en el pom.xml solo incluyo la dependencia de barcode4j)
La generación de código
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | package com.dar10comyr.blogspot.main.barco; import java.awt.image.BufferedImage; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import org.krysalis.barcode4j.impl.code39.Code39Bean; import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider; import org.krysalis.barcode4j.tools.UnitConv; public class MiBarco { public File getBarcode(String ean){ Code39Bean codebean = new Code39Bean(); final int dpi = 150; double ancho = UnitConv.in2mm(1.0f / dpi); codebean.setModuleWidth(ancho); codebean.setWideFactor(3); codebean.doQuietZone(false); String directorio = "resources/images/"; File carpeta = new File(directorio); if(!carpeta.exists()){ carpeta.mkdirs(); } String nombreArchivo = "codigoBarras.png"; File miFile = new File(directorio + nombreArchivo); OutputStream out = null; BitmapCanvasProvider canvas; try { out = new FileOutputStream(miFile); canvas = new BitmapCanvasProvider(out, "image/x-png", dpi, BufferedImage.TYPE_BYTE_BINARY, false, 0); codebean.generateBarcode(canvas, ean); canvas.finish(); } catch(IOException ioe){ System.err.println("Ha ocurrido un error: " + ioe.getMessage()); } finally { try { out.close(); } catch (IOException e) { System.err.println("No se ha podido cerrar el outputstream " + e.getMessage()); } } return miFile; } } |
La ventana
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | package com.dar10comyr.blogspot.main.barco; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; public class Ventana { JFrame marco; JLabel etiqueta; ImageIcon imagen; public Ventana(File archivo){ marco = new JFrame(); marco.setSize(350, 300); marco.setLocationRelativeTo(null); marco.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); BufferedImage myPicture; try { myPicture = ImageIO.read(archivo); imagen = new ImageIcon(myPicture); etiqueta = new JLabel(imagen); marco.add(etiqueta); } catch (IOException e) { e.printStackTrace(); } marco.setVisible(true); } } |
El main para correr todo =)
1 2 3 4 5 6 7 8 9 10 11 | package com.dar10comyr.blogspot.main.barco; import java.io.File; public class Main { public static void main(String[] args){ MiBarco bar = new MiBarco(); File imagen = bar.getBarcode("34198987"); new Ventana(imagen); } } |
El resultado final
No hay comentarios:
Publicar un comentario