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

    Aituo: Non si riesce ad inserire una foto.

    Quando faccio doppio click sul file jar compare il disegno di un quadrato, e fino a qui tutto bene.
    Ma quando seleziono un file immagine e lo voglio inserire nella medesima posizione dove c'è il quadrato, allora non funziona.
    Dove è che sto sbagliando ?

    questo è il codice...
    codice:
    import  javax.swing.*;
    import  java.awt.*;
    import  java.awt.event.*;
    import  javax.swing.filechooser.*;
    import  javax.swing.SwingUtilities;
    import  java.io.*;
    import  java.util.*;
    
    public class frame1 extends JFrame {
        private JPanel panCentro=new JPanel();
        private JPanel pannello1=new JPanel();
        private JPanel pannello2=new JPanel();
        private JButton bChiude = new JButton("Chiude");
        private JButton bCaricaFoto = new JButton("carica foto");
        private ImageIcon mia_foto = new ImageIcon();
        private String SentieroNomeFile="";    
        private String NomeFile="";
        private String Sentiero="";
        
        public frame1() {
            
            
            //--- inizio eventi --- 
            bCaricaFoto.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    javax.swing.filechooser.FileFilter filtro = new javax.swing.filechooser.FileNameExtensionFilter("immagini", "bmp", "jpg", "jpeg", "gif");
                    JFileChooser filechoosed = new JFileChooser();
                    //filechoosed.setCurrentDirectory(new File("c:\\"));
    
                                  
                    //--- inizio impostazione dei filtri ---
                    filechoosed.setAcceptAllFileFilterUsed(false);                
                    filechoosed.addChoosableFileFilter(filtro);                
                    //--- fine impostazione dei filtri ---
    
                    
                    
                    int result = filechoosed.showOpenDialog(frame1.this); 
                    if (result == JFileChooser.APPROVE_OPTION) {
                        File f1 = filechoosed.getSelectedFile();
                        NomeFile=f1.getName();                    
                        SentieroNomeFile = f1.getAbsolutePath();
                        pannello1.removeAll();
                        ImageIcon mia_foto = new ImageIcon(SentieroNomeFile);
                        CaricaLaFoto FotoCaricata = new CaricaLaFoto();                    
                        pannello1.add(FotoCaricata);
                    }else{
                        String msg="operazione annullata";
                        JOptionPane.showMessageDialog(null, msg, "file di tipo immagine", JOptionPane.INFORMATION_MESSAGE);
                                            
                    }   
                }
            });
            
            //--- fine eventi --- 
            
            //--- inizio pannello1 --- 
            Disegna mioDisegno = new Disegna();
            pannello1.setLayout(new BoxLayout(pannello1, BoxLayout.Y_AXIS));
            pannello1.setPreferredSize(new Dimension(300, 290));        
            pannello1.add(mioDisegno);
            //--- fine pannello1 ---         
    
            //--- inizio pannello2 --- 
            pannello2.setLayout(new GridBagLayout());
            GridBagConstraints c2 = new GridBagConstraints();
            c2.fill = GridBagConstraints.HORIZONTAL;
            //Insets(up,left,bottom,right);
            c2.insets = new Insets(3,3,3,3);
            c2.gridy = 0;
            c2.gridx = 0; pannello2.add(bChiude, c2);
            c2.gridx = 2; pannello2.add(bCaricaFoto, c2);
            //--- fine pannello2 --- 
    
            
            
            //--- inizio panCentro --- 
            panCentro.setLayout(new GridBagLayout());
            GridBagConstraints c99 = new GridBagConstraints();
            c99.fill = GridBagConstraints.VERTICAL;
            c99.anchor = GridBagConstraints.LINE_START;
            c99.insets = new Insets(0,0,0,0);
            c99.gridx = 0;
            int coy=-1;
            coy++; c99.gridy = coy; panCentro.add(pannello1, c99); 
            coy++; c99.gridy = coy; panCentro.add(pannello2, c99); 
            //--- fine panCentro --- 
            
    
            JScrollPane barre1 = new JScrollPane(panCentro);
            barre1.setPreferredSize(new Dimension(320, 330));
    
    
            Container mioc = getContentPane();
            mioc.setLayout(new BoxLayout(mioc, BoxLayout.Y_AXIS));
            mioc.add(barre1);
            
            
            this.pack();
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            this.setLocationRelativeTo(null);
            this.setTitle("frame1");
            this.setVisible(true);
        }
        
        public static void main(String[] args) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    new frame1();
                }
            });
        }
    
        
        class CaricaLaFoto extends JPanel {
            public void paintComponent(Graphics g) {
                super.paintComponent(g);
                if (SentieroNomeFile.equals("")) {
                    g.setColor(Color.white);
                    g.fillRect(0,0,300,300);
            
                    g.setColor(Color.black);
                    g.drawRect(50,50,128,128);
                }else{
                    //--- inizio mettere la foto ne grafico --- 
                    g.setColor(Color.white);
                    g.fillRect(0,0,300,300);        
                    g.drawImage(mia_foto, 50, 50, 128, 128, this); //qui fa errore                  //--- inizio mettere la foto ne grafico --- 
                }
            }    
        }
        
    }
    
    
    class Disegna extends JPanel {
        public void paintComponent(Graphics g) {
            super.paintComponent(g);
                    
            g.setColor(Color.white);
            g.fillRect(0,0,300,300);
            
            g.setColor(Color.black);
            g.drawRect(50,50,128,128);
        }    
    }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Aituo: Non si riesce ad inserire una foto.

    Originariamente inviato da gaetano123
    Quando faccio doppio click sul file jar compare il disegno di un quadrato, e fino a qui tutto bene.
    Ma quando seleziono un file immagine e lo voglio inserire nella medesima posizione dove c'è il quadrato, allora non funziona.
    Dove è che sto sbagliando ?
    Ci sono parecchie cose che non vanno .... già solo (ad esempio) le denominazioni di classi/variabili. Ma a parte le "convenzioni" sui nomi, ci sono questioni tecniche che non quadrano!

    Hai messo una variabile di istanza mia_foto, che è quella che vuoi usare in CaricaLaFoto. Poi però nel actionPerformed hai dichiarato una nuova variabile (locale) mia_foto. E questa assegnazione ovviamente non va certo a cambiare la variabile di istanza!!

    Ma ancora, a parte questo, ha poco senso che ogni volta togli tutti i componenti dal pannello, istanzi un nuovo CaricaLaFoto e lo aggiungi. E tra l'altro non hai fatto nemmeno un validate() sul pannello (cosa che servirebbe per rivalidate il layout visto che lo hai modificato togliendo/aggiungendo roba). Ma in ogni caso non avrebbe senso ... infatto lo "stato" cioè la immagine non è in CaricaLaFoto ma in frame1!!! E quindi non servirebbe creare una nuova istanza di CaricaLaFoto.

    E in ogni caso hai un errore di compilazione. il drawImage() NON accetta un javax.swing.ImageIcon ma solo un java.awt.Image!!!

    Insomma ... da rivedere tutto molto bene! Troppi errori e design sbagliato.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Aituo: Non si riesce ad inserire una foto.

    Originariamente inviato da andbin
    Insomma ... da rivedere tutto molto bene! Troppi errori e design sbagliato.
    hai ragione!
    e allora correggilo cosi che io possa imparare.

    Il codice è li da vedere ed inoltre c'è tutto non manca niente.

  4. #4
    che presunzione.... :berto:
    Gutta cavat lapidem
    [La goccia scava la pietra]
    ***
    (Ovidio)

  5. #5
    Ho risolto il problema.
    Ringrazio a tutti per l'aiuto dato.

    esempio che dimostra che sono riuscito ad inserire l'immagine è visibile qui.
    http://www.gencodicephp.it/gencalendars.rar

    Nota: il file jar non parte se la versione java installata nella macchina è inferiore a 1.6.0.11, (in questo speciavole caso parte il decompressore anzichè il file jar.)

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.