Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    7

    Visualizzazione Immagine su Jpanel

    Salve,
    devo visualizzare su un Jpanel (nel codice con nome visualizzaImmagine) un immagine.
    Il path dell'immagine lo ricavo attraverso un JFileChooser attraverso l'azione del pulsante caricaImmagine.
    Il mio problema è che non mi visualizza l'immagine (infatti il metodo drawImage mi restituisce false).
    Questo è il codice:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.File;
    import java.net.MalformedURLException;
    import java.net.URL;

    public class GestioneImmagini extends javax.swing.JFrame {

    private static final long serialVersionUID = 1L;

    {
    //Set Look & Feel
    try {
    javax.swing.UIManager.setLookAndFeel("com.sun.java .swing.plaf.windows.WindowsLookAndFeel");
    } catch(Exception e) {
    e.printStackTrace();
    }
    }

    private JButton CaricaImmagine;
    static Graphics g;
    private static JPanel visualizzaImmagine;

    /**
    * Auto-generated main method to display this JFrame
    */
    public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
    public void run() {
    GestioneImmagini inst = new GestioneImmagini();
    inst.setLocationRelativeTo(null);
    inst.setVisible(true);
    }
    });
    }

    public GestioneImmagini() {
    super();
    initGUI();

    }

    private void initGUI() {

    try {
    setDefaultCloseOperation(WindowConstants.DISPOSE_O N_CLOSE);
    getContentPane().setLayout(null);
    {
    CaricaImmagine = new JButton();
    getContentPane().add(CaricaImmagine);
    CaricaImmagine.setText("Carica Immagine");
    CaricaImmagine.setBounds(17, 21, 200, 23);
    CaricaImmagine.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent evt) {
    try {
    CaricaImmagineActionPerformed(evt);
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    });
    }
    {
    visualizzaImmagine = new JPanel();
    getContentPane().add(visualizzaImmagine);
    visualizzaImmagine.setBounds(305, 107, 100, 100);
    }
    pack();
    this.setSize(500, 500);
    } catch (Exception e) {
    e.printStackTrace();
    }
    }

    private void CaricaImmagineActionPerformed(ActionEvent evt) {
    String url=null;
    JFileChooser chooser = new JFileChooser();
    int returnVal=chooser.showOpenDialog(GestioneImmagini. this);
    if (returnVal == JFileChooser.APPROVE_OPTION) {
    File file = chooser.getSelectedFile();
    url=file.getAbsolutePath();
    }else{
    System.out.println("Errore nel caricamento del file");
    }
    System.out.println(""+url);
    Image img = Toolkit.getDefaultToolkit().getImage(url);
    g = visualizzaImmagine.getGraphics();
    g.drawImage(img, 0, 0,this);
    Boolean tmp=g.drawImage(img, 0, 0,this);
    System.out.println(""+tmp);
    visualizzaImmagine.repaint();
    }

    }
    P.s. l'immagine la devo visualizzare per forza in un Jpanel e non in una JLabel

    Grazie in anticipo

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

    Re: Visualizzazione Immagine su Jpanel

    Originariamente inviato da palopo
    l'immagine la devo visualizzare per forza in un Jpanel
    Ok, ma l'approccio che hai usato è fondamentalmente sbagliato. Non devi disegnare "al volo" sul Graphics nel contesto di un qualunque evento (come nel actionPerformed() relativo al click su un pulsante)!!!

    Devi estendere JPanel per fare un "tuo" pannello e in questa tua classe fare l'override di paintComponent() che è il contesto di disegno appropriato e lì dentro disegnare la immagine.

    E trovi esempi sia sul forum (se cerchi) sia tra i miei Java Examples (vedi firma).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2010
    Messaggi
    7
    sono alle prime armi, quindi non mi è molto chiaro...Se non ti è di troppo disturbo potresti aggiustare il mio codice??
    Grazie

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 © 2024 vBulletin Solutions, Inc. All rights reserved.