Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Gestione Barcode

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268

    Gestione Barcode

    Ciao a tutti sto cercando di creare una applicazione per la generazione dei codici a barre.
    Utilizzo barbecue, e i codici mi vengono creati da un contatore partendo dal numero 1000.
    codice:
    // prendo il numero più grande nella tabella e aggiungo 1
    int barcode = num.Seriale("tb_barcode", "idtb_barcode");
     File file=new File("/Users/Kernel/barcode.jpg");
            try {
                
                barcodeString = Integer.toString(barcode);
                Barcode barCode=BarcodeFactory.createEAN128(barcodeString);
               
                BarcodeImageHandler.saveJPEG(barCode,file);
            } catch (OutputException e) {
              
                e.printStackTrace();
            } catch (BarcodeException e) {
              
                e.printStackTrace();
            }
            ImageIcon image = new ImageIcon("/Users/Kernel/barcode.jpg");
            JLabel label = new JLabel();
          
            JInternalFrame dialog = new JInternalFrame();
            JButton stampa = new JButton("Stampa");
            JPanel panel = new JPanel();
            label.setIcon(image);
            panel.add(label);
            panel.add(stampa);
            panel.repaint();
            dialog.setSize(400, 200);
            dialog.add(panel);
            dialog.setClosable(true);
    
    
            deskTop.add(dialog);
            
            
            dialog.show();
    Lancio questo programam da un bottone. Il problema è che sebbene barcode vari ad ogni click il valore visualizzato nella finestra è sempre lo stesso. Anche aprendo il file barcode.jpg il valore ad ogni click varia.
    ho provato anche a fare i metodi repaint e refresh ma non funziona, qualche idea?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    Lancio questo programam da un bottone. Il problema è che sebbene barcode vari ad ogni click il valore visualizzato nella finestra è sempre lo stesso. Anche aprendo il file barcode.jpg il valore ad ogni click varia.
    ho provato anche a fare i metodi repaint e refresh ma non funziona, qualche idea?
    ImageIcon usa il Toolkit di AWT (java.awt.Toolkit) per caricare le immagini da file/url. In particolare, quel costruttore di ImageIcon usa il getImage di Toolkit. getImage utilizza un sistema di "caching" per cui a parità di filename/url restituisce lo stesso identico oggetto Image. Per dirlo in altro modo: una volta che getImage ha fornito un Image, alla prossima richiesta di quello stesso filename/url non rilegge/ricarica la immagine ma fornisce quella già in memoria.

    Hai diverse possibilità:

    1) Usare la classe javax.imageio.ImageIO (che tra l'altro supporta pure più formati). ImageIO fornisce in lettura un BufferedImage, dovresti poi incapsularlo nel ImageIcon. Nota importante: ImageIO carica la immagine in modo sincrono (bloccante) mentre il Toolkit carica in modo asincrono.

    2) Usare direttamente il createImage di Toolkit, che non ha il meccanismo di caching. Ottieni quindi un Image che poi incapsuli in un ImageIcon.

    3) Tenendo il caricamento con ImageIcon come hai fatto, invocare un flush() sul Image contenuto nel ImageIcon. Questo permette di "scaricare" i dati dalla cache e fa sì che la immagine venga materialmente ricaricata.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    ho utilizzato il metodo flush()
    codice:
     ImageIcon image = new ImageIcon("/Users/Kernel/barcode.jpg");
            JLabel label = new JLabel();
           image.getImage().flush();
    il problema è che se creo tanti codici con altrettanti internal frame si cambiano tutti

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    il problema è che se creo tanti codici con altrettanti internal frame si cambiano tutti
    Eh sì, perché sebbene avresti N oggetti ImageIcon, essi fanno riferimento allo stesso oggetto Image che "flushato" (scusa l'italianizzazione) è sì aggiornato con il contenuto del file ma .... comunque unico!

    Quindi il 3) non ti è utile. A te serve tenere in memoria oggetti Image distinti. Quindi o 1) o 2).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    ok ho risolto con il metodo 1
    codice:
     BufferedImage img = null;
            try {
                img = ImageIO.read(new File("/Users/Kernel/barcode.jpg"));
            } catch (IOException e) {
            }
    
    
         
            ImageIcon image = new ImageIcon(img);
    però avrei un altro problemino: dal primo listato si vede che ad ogni InternalFrame che istanzio aggiungo un JButton per farlo stampare.
    poiché il file che scrivo viene sovrascritto ogni volta mi rimane soltanto "l'imagine" sull'internalframe. Posso in qualche modo stampare quella o dovrei scrivere n files con il jpeg dell'immagine?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    dal primo listato si vede che ad ogni InternalFrame che istanzio aggiungo un JButton per farlo stampare.
    poiché il file che scrivo viene sovrascritto ogni volta mi rimane soltanto "l'imagine" sull'internalframe. Posso in qualche modo stampare quella o dovrei scrivere n files con il jpeg dell'immagine?
    Lo vedo che c'è il pulsante "Stampa" ma .... praticamente stampi dove e con cosa? print di java.awt.Desktop? Direttamente con la Printing API? Lanciando un software esterno?

    Comunque, in generale: se quello che invochi per stampare richiede un file "fisico", indubbiamente devi scrivere un file. Altrimenti, es. con la Printing API, puoi stampare direttamente con solo l'oggetto (Buffered)Image.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    utilizzando la Printing Api cosa vado a stampare? mi spiego se creo 5 barcode riesco a stamparli al click del pulsante?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    utilizzando la Printing Api cosa vado a stampare? mi spiego se creo 5 barcode riesco a stamparli al click del pulsante?
    Con la Printing API (intendo package java.awt.print), il programmatore tipicamente implementa l'interfaccia Printable per stampare pagine fino ad un certo page index. Avendo il Graphics, puoi stampare testo, grafica, immagini. Chiaramente sono a tuo carico i calcoli per posizionare/dimensionare quello che stampi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    conosci i driver javapos? se si si possono implementare sul mac? non ho ben capito

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    conosci i driver javapos?
    No ... non so cosa siano!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.