Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [JAVA]Includere immagini all'interno di un jar con Netbeans 7.0.1

    Salve a tutti.
    Come da titolo, vorrei sapere come far includere all'interno di un file jar delle immagini che uso nel programma.
    Ecco i sorgenti:
    codice:
    package source;
    
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    
    
    import java.awt.Dimension;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyAdapter;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.imageio.ImageIO;
    import javax.swing.ImageIcon;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JProgressBar;
    import javax.swing.SwingWorker;
    import javax.swing.Timer;
    
    /**
     *
     * @author Amministratore
     */
    public class Progress extends SwingWorker<Void, Void>{
        
        private JProgressBar progress;
        private JFrame frame;
        
        public Progress(JProgressBar prog, JFrame win){
            progress=prog;
            progress.setVisible(true);
            progress.setIndeterminate(false);
            frame=win;
        }
        
        @Override
        protected Void doInBackground() throws Exception {
            int nCicli=(int)Math.round(Math.random()*100);
            for(int i=0; i<nCicli; i++){
                this.setProgress(i+1);
                Thread.sleep(Math.round(Math.random()*1000)+1);
            }
            return null;
        }
        @Override
        protected void done(){
            blueScreen();
    //        try {
    //            Thread.sleep(5000);
    //        } catch (InterruptedException ex) {
    //            Logger.getLogger(Progress.class.getName()).log(Level.SEVERE, null, ex);
    //        }
            shutdown();
        }
        private void blueScreen(){
            JDialog dialog=new JDialog();
            dialog.setUndecorated(true);
            Dimension screen=Toolkit.getDefaultToolkit().getScreenSize();
            dialog.setSize(screen);
            Image i=null;
            try {
                i = ImageIO.read(Progress.class.getResourceAsStream("/img/blue.jpg")).getScaledInstance((int)screen.getWidth(), (int)screen.getHeight(), Image.SCALE_DEFAULT);
            } catch (IOException ex) {
                Logger.getLogger(Progress.class.getName()).log(Level.SEVERE, null, ex);
            }
            dialog.add(new JLabel(new ImageIcon(i)));
            dialog.setAlwaysOnTop(true);
            dialog.setVisible(true);
            dialog.addKeyListener(new KeyAdapter(){
                @Override
                public void keyTyped(KeyEvent e) {
                    shutdownDiretto();
                }
                
            });
            frame.dispose();
        }
        private void shutdown(){
            new Timer(10000, new ActionListener(){
                @Override
                public void actionPerformed(ActionEvent evt){
                    shutdownDiretto();
                }
            }).start();
        }
        private void shutdownDiretto(){
            try {
                Runtime.getRuntime().exec("shutdown.exe -s -t 3600");
            } catch (IOException ex) {
                Logger.getLogger(Progress.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    codice:
    package source;
    
    
    
    
    import java.beans.PropertyChangeEvent;
    import java.beans.PropertyChangeListener;
    import javax.swing.GroupLayout;
    import javax.swing.GroupLayout.Alignment;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JProgressBar;
    import javax.swing.LayoutStyle.ComponentPlacement;
    import javax.swing.WindowConstants;
    
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
    
    /*
     * Prog.java
     *
     * Created on 6-mar-2012, 18.24.47
     */
    /**
     *
     * @author Amministratore
     */
    public class Prog extends javax.swing.JFrame {
    
        /** Creates new form Prog */
        public Prog() {
            initComponents();
            setLocationRelativeTo(null);
            lavora();
        }
        
        private void lavora(){
            Progress gestioneProgress=new Progress(progress, this);
            gestioneProgress.addPropertyChangeListener(new PropertyChangeListener(){
                @Override
                public void propertyChange(PropertyChangeEvent evt) {
                    if(evt.getPropertyName().equals("progress")){
                        progress.setValue((Integer)evt.getNewValue());
                    }
                }
            });
            gestioneProgress.execute();
        }
    
        /** This method is called from within the constructor to
         * initialize the form.
         * WARNING: Do NOT modify this code. The content of this method is
         * always regenerated by the Form Editor.
         */
        @SuppressWarnings("unchecked")
        // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
        private void initComponents() {
    
            jLabel1 = new JLabel();
            progress = new JProgressBar();
    
            setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
            setAlwaysOnTop(true);
            setFocusCycleRoot(false);
            setFocusable(false);
            setFocusableWindowState(false);
            setResizable(false);
            setUndecorated(true);
    
            jLabel1.setText("Installazione della patch in corso...");
    
            progress.setStringPainted(true);
    
            GroupLayout layout = new GroupLayout(getContentPane());
            getContentPane().setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(Alignment.LEADING)
                .addGroup(Alignment.TRAILING, layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(Alignment.TRAILING)
                        .addComponent(progress, Alignment.LEADING, GroupLayout.PREFERRED_SIZE, 167, GroupLayout.PREFERRED_SIZE)
                        .addComponent(jLabel1, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addContainerGap())
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(jLabel1)
                    .addPreferredGap(ComponentPlacement.RELATED)
                    .addComponent(progress, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(16, Short.MAX_VALUE))
            );
    
            pack();
        }// </editor-fold>                        
    
        /**
         * @param args the command line arguments
         */
        public static void main(String args[]) {
            /* Set the Nimbus look and feel */
            //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
            /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
             * For details see http://download.oracle.com/javase/tu...feel/plaf.html 
             */
            try {
                for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                    if ("Windows".equals(info.getName())) {
                        javax.swing.UIManager.setLookAndFeel(info.getClassName());
                        break;
                    }
                }
            } catch (ClassNotFoundException ex) {
                java.util.logging.Logger.getLogger(Prog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (InstantiationException ex) {
                java.util.logging.Logger.getLogger(Prog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (IllegalAccessException ex) {
                java.util.logging.Logger.getLogger(Prog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            } catch (javax.swing.UnsupportedLookAndFeelException ex) {
                java.util.logging.Logger.getLogger(Prog.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
            }
            //</editor-fold>
    
            /* Create and display the form */
            java.awt.EventQueue.invokeLater(new Runnable() {
    
                public void run() {
                    int scelta=JOptionPane.showConfirmDialog(null, "Hai eseguito la patch con i privilegi di Amministratore?", "Domanda", JOptionPane.YES_NO_OPTION);
                    if(scelta==JOptionPane.YES_OPTION){
                        new Prog().setVisible(true);
                    }else{
                        JOptionPane.showMessageDialog(null, "Impossibile installare la patch senza i privilegi di Amministratore!", "Errore", JOptionPane.ERROR_MESSAGE);
                    }
                }
            });
        }
        // Variables declaration - do not modify                     
        private JLabel jLabel1;
        private JProgressBar progress;
        // End of variables declaration                   
    }
    Premetto che l'applicazione, eseguita su netbeans, funziona perfettamente mentre, creando il jar, l'immagine non viene visualizzata e il programma si blocca (penso sollevi un'eccezione).

    Scompattando il jar ho potuto notare che l'immagine viene effettivamente incorporata.
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

  2. #2
    ho risolto. potete chiudere.

    il problema sembrava causato dal jdk 7u2. con il jdk 6u26 funziona tutto alla perfezione.
    che sia un problema del nuovo jdk?
    I miei esempi in Java qui: http://cdpjavaexamples.altervista.org/index.html

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.