Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    107

    Problemi visualizzazione immagini in una GUI

    Ciao ragazzi! Ho un problema... Ho cercato in giro x la rete qualche frammento di codice che mi consentisse di far visualizzare delle piccole jpg nella mia GUI ma l'unico che ho trovato che non fosse applet si comporta così:

    public void paint (Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    File img1 = new File ("prova.jpg");
    isImg1 = ImageIO.createImageInputStream (img1);
    buffImage1 = ImageIO.read(isImg1);
    g2.drawImage (buffImage1, 0, 0, this);

    ed è un metodo a sè stante che, pur stando nel class ma al di fuori del main, non necessita di essere richiamato...
    ora ho inserito le immagini e funzionano alla perfezione, ma quando devo fare qualcosa di più complesso non va... tipo:
    ho inserito un semplice button che quando lo clicco mi deve far visualizzare nuove immagini, ma ovviamente non funziona perchè non si può invocare il metodo paint e non si può neanche provare a passare come parametro a File img1 = new File ("prova.jpg"); una stringa diversa anzichè prova, o un altro file dato che questo paint sembra fregarsene di quello che succede nel resto del programma... è assolutamente indipendente!!! Ora ragazzi 2 sono le cose:
    1) esiste qualche altro metodo per far visualizzare le immagini (non applet, eh?) nella mia gui in maniera molto più comfortevole
    2) devo creare o implementare qualche strana interfaccia o classe astratta che mi faccia comunicare questo benedetto paint, che altro non è che uno stupido void ,con il resto del mondo...
    A voi l'ardua sentenza!!!

    Grazie mille!!!
    Giovanni

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2002
    Messaggi
    72
    Le immagini vanno inserite nei pannelli i quali a loro volta dentro i frame.
    Il metodo paint lo chiami invocando repaint() dal pannello , ma ti suggerisco di ridefinire invece il metodo paintComponent.

    Prova a studiare questo esempio:

    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    import javax.imageio.ImageIO;
    import javax.swing.*;
    class TestImage extends JFrame{
    public static void main(String[] a){
    TestImage b=new TestImage();
    }
    public TestImage(){
    PannelloDelleFoto pannelloFoto=new PannelloDelleFoto();
    getContentPane().add(pannelloFoto);
    setSize(600,400);
    show();
    }
    }


    class PannelloDelleFoto extends JPanel{
    Image immagine;
    public PannelloDelleFoto(){
    try {
    immagine=ImageIO.read(new File("c:/Ninfee.jpg")) ;
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    public void paintComponent(Graphics g){
    Graphics2D g2=(Graphics2D)g;
    super.paintComponent(g2);
    if(immagine!=null){
    g2.drawImage(immagine,0,0,null);
    }

    }
    }

    Ora puoi associare ad un pulsante l'azione di caricare una nuova immagine memorizzandola nella variabile "immagine" poi chiama pannelloFoto.repaint(); , questo chiamerà paintComponent che ridisegnerà la foto.

    ciao.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,318
    Prova ad usare una JLabel:
    codice:
    JLabel lbl = new JLabel( new ImageIcon("tuofile.jpg") );
    ...
    getContentPane().add( lbl );
    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2004
    Messaggi
    107
    Grazie mille!!!! Mi serviva x creare una GUI come tiradadi x Yahtzee... Lo conoscete? Cmq il risultato è quello che speravo... Grazie ancora!

    PS vi allego il risultato finale... certo non sono riuscito ad allineare le checkbox in corrispondenza dei dadi... qualcuno ha idee a riguardo? Ho usato un GridLayout con 10 colonne(Label vuota e checkbox per 5 volte, altrimenti mi visualizzava le checkbox a sinistra!!)
    Immagini allegate Immagini allegate
    Giovanni

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.