Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20
  1. #1

    Visualizzare immagine scelta da chooser

    Ciao a tutti, dopo aver passato un pomeriggio a cercare di far visualizzare un immagine scelta attraverso un JFileChooser in un frame senza successo ...vi chiedo aiuto
    ecco il codice:
    codice:
    public class Inserisci extends Applet implements ActionListener, Serializable {
        private Lista l=null;
        private JButton salva,sfoglia;
        private JTextField textnome,textmadre,textanno,textgiorno,textmese;
        JTextArea textinfo;
        private JComboBox combo;
        private JFrame f;
        private Image img;
    
        Inserisci(Lista l){
            this.l=l;
            elementi();
        }
    
        public void elementi(){
            //Frame
            f=new JFrame();
            f.setVisible(true);
            f.setTitle("Nuovo cane");
            f.setSize(500, 400);
            f.setDefaultCloseOperation(1);
            f.setLayout(null);
            //Inserimento del nome
            JLabel nome=new JLabel("Nome:");
            nome.setBounds(10, 10, 120, 20);
            textnome=new JTextField();
            textnome.setBounds(60, 10, 110, 20);
            //Inserimento Madre
            JLabel madre=new JLabel("Figlio di:");
            madre.setBounds(10, 40, 120, 20);
            textmadre =new JTextField();
            textmadre.setBounds(60, 40, 110, 20);
            //Data di Nascita
            JLabel nascita=new JLabel("Data Nascita:");
            nascita.setBounds(10, 70, 120, 20);
            textanno=new JTextField("aaaa");
            textanno.setBounds(70, 90, 40, 20);
            textmese=new JTextField("mm");
            textmese.setBounds(35, 90, 27, 20);
            textgiorno=new JTextField("gg");
            textgiorno.setBounds(10, 90, 20, 20);
            //pulsante salva
            salva =new JButton("Salva");
            salva.setBounds(20, 300, 80, 40);
            salva.addActionListener(this);
            //ComboBox maschio o femmina
            String[] stringhe =  {"Maschio", "Femmina"};
            combo=new JComboBox(stringhe);
            combo.setBounds(200, 20, 100, 20);
            //Area di testo x info aggiuntive
            JLabel info=new JLabel("Informazioni Aggiuntive");
            info.setBounds(10, 110, 150, 20);
            textinfo =new JTextArea();
            textinfo.setBounds(10, 130, 200, 150);
            textinfo.setLineWrap(true);
            textinfo.setWrapStyleWord(true);
            //pulsante sfoglia
            sfoglia =new JButton("inserisci Foto");
            sfoglia.setBounds(350, 20, 120, 20);
            sfoglia.addActionListener(this);
    
            //aggiunta elementi al frame
            f.add(nome);
            f.add(textnome);
            f.add(nascita);
            f.add(textanno);
            f.add(textmese);
            f.add(textgiorno);
            f.add(madre);
            f.add(textmadre);
            f.add(salva);
            f.add(sfoglia);
            f.add(combo);
            f.add(info);
            f.add(textinfo);
        }
    
        public void actionPerformed(ActionEvent e) {
            if (e.getSource().equals(salva)){
                String nome=textnome.getText();
                String madre=textmadre.getText();
                String ann=textanno.getText();
                String mes=textmese.getText();
                String giorn=textgiorno.getText();
                String inf=textinfo.getText();
                int anno=0,mese=0,giorno=0;
                String se=combo.getSelectedItem().toString();
                try{
                    anno = Integer.parseInt(ann);
                    mese = Integer.parseInt(mes);
                    giorno = Integer.parseInt(giorn);
                    f.dispose();//chiude la finestra
                    Cane c=new Cane(nome,madre,anno,mese,giorno,inf,se);
                    l.aggiungi(c);
                }
                catch(Exception q){
                        JOptionPane.showMessageDialog(null, "Anno, Mese e giorno devono essere numeri.");
                }
            }
            if(e.getSource().equals(sfoglia)){
                JFileChooser chooser=new JFileChooser();
                int risultato = chooser.showOpenDialog (null);
                if(risultato==JFileChooser.APPROVE_OPTION){
                    String x=chooser.getSelectedFile().getName();
                    img = getImage(getDocumentBase(),x);  il primo errore a runtime lo segna in questa righa 
                }
            }
        }
    
        @Override
        public void paint(Graphics g) {
            g.drawImage(img, 220, 220, this);
            f.repaint();
        }
    }

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

    Re: Visualizzare immagine scelta da chooser

    Originariamente inviato da Attak
    codice:
    img = getImage(getDocumentBase(),x);  il primo errore a runtime lo segna in questa righa
    Mi pare il minimo che dia errore a runtime!! getDocument() ritorna un URL (su http:// o file:// a seconda) del documento in cui c'è la applet mentre il path fornito da JFileChooser è un path "assoluto". Ora .... secondo te come potrebbe mai la getImage() "combinare" insieme un URL e un path assoluto sul file-system??

    Usa il Toolkit. E comunque essendo in una applet, devi fornire gli opportuni permessi per poter accedere al file-system. (che vuol dire: smanettare con le policy di sicurezza o "firmare" digitalmente la applet).

    Originariamente inviato da Attak
    codice:
        public void paint(Graphics g) {
            g.drawImage(img, 220, 220, this);
            f.repaint();
        }
    }
    Non si deve mai invocare un repaint() dentro un paint() o paintComponent() ... né se il repaint è per un altro componente né (meno ancora!) se fosse per il componente sé stesso!!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Visualizzare immagine scelta da chooser

    Che casino speravo fosse più facile
    Originariamente inviato da andbin
    Mi pare il minimo che dia errore a runtime!! getDocument() ritorna un URL (su http:// o file:// a seconda) del documento in cui c'è la applet mentre il path fornito da JFileChooser è un path "assoluto". Ora .... secondo te come potrebbe mai la getImage() "combinare" insieme un URL e un path assoluto sul file-system??
    però dal JFileChooser mi facio dare solo il nome del file non il percorso:
    String x=chooser.getSelectedFile().getName() ;
    img = getImage(getDocumentBase(),x);

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

    Re: Re: Re: Visualizzare immagine scelta da chooser

    Originariamente inviato da Attak
    però dal JFileChooser mi facio dare solo il nome del file non il percorso:
    String x=chooser.getSelectedFile().getName() ;
    img = getImage(getDocumentBase(),x);
    Ah sì, scusa, non avevo visto che hai usato getName(). Ma comunque cambia poco. Che centra un path "qualunque" di cui tu usi solo il "base" name con un URL del documento della applet??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    e quindi come posso fare?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Attak
    e quindi come posso fare?
    Prendi il path assoluto del java.io.File (non con getName()! questo sarebbe solo il nome "base" senza path) e lo passi a getImage() di Toolkit.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    mmmm.. da errore... evidentemente non ho capito bene mi fa creare il metodo getImage
    codice:
    if(e.getSource().equals(sfoglia)){
                JFileChooser chooser=new JFileChooser();
                int risultato = chooser.showOpenDialog (null);
                if(risultato==JFileChooser.APPROVE_OPTION){
                    String x=chooser.getSelectedFile().getAbsolutePath();
                    img = getImage(x);
                }
            }

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    getImage() di java.awt.Toolkit
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Originariamente inviato da andbin
    getImage() di java.awt.Toolkit
    come faccio a specificare che getImage() è di java.awt.Toolkit? io ho importato java.awt.Toolkit ma l'errore resta sempre

    EDIT: come non detto ci sono riuscito ^^
    img= Toolkit.getDefaultToolkit().getImage(x);

  10. #10
    EDIT:
    messaggio uguale a quello sotto, scusate l'errore, colpa del browser

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.