Visualizzazione dei risultati da 1 a 9 su 9

Discussione: cambiare sfondo JPanel

  1. #1
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543

    cambiare sfondo JPanel

    Salve, io uso questo codice
    Codice PHP:
    class Sfondo extends JPanel {
        private 
    String img;
        public 
    Sfondo(String img){
            
    this.img img;
        }
        public 
    void paintComponent(Graphics g) {
            
    super.paintComponent(g);
            
    int w getWidth();
            
    int h getHeight();
            
    g.drawImage(new ImageIcon(img).getImage(), 00whthis);
        }
    }

    public class 
    Finestra extends JFrame{
    public 
    Finestra(String titoloString icoString sfint wint hboolean visibboolean title){
            
    super(titolo);
            if(
    w<0w=getScreenWidth()/2//metodo creato da me
            
    if(h<0h=getScreenHeight()/2//metodo creato da me
            
    if(ico.length()>0this.setIconImage(new ImageIcon(ico).getImage());
            
    this.setSize(wh);
            
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            
    this.setUndecorated(!title);
            
    JPanel sfondo = new Sfondo(sf);
            
    this.getContentPane().add(sfondo);
            if (
    visibthis.setVisible(true);
        }
        public 
    void cambiaSfondo(String sf){
    [
    b]?????????????????????????[/b]
        }

    come realizzo quel modulo? l'unica cosa che mi è venuta in mente è eliminare il pannello sfondo e crearne un altro ma non so proprio come fare e inoltre ho due domande...il pannello sfondo se contiene elementi, questi verranno cancellati?
    il mio obiettivo è creare un pannello con lo sfondo predefinito ma, un utente, cliccando su un pulsante (che apre un'altra finestra dove sceglie il percorso) può cambiare tale sfondo

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    più o meno così:

    Codice PHP:
    class Sfondo extends JPanel {
        private 
    String img;
        public 
    Sfondo(String img){
            
    setImage(img);
        }
        public 
    void setImage(String img)
        {
                
    this.img img;
                
    repaint();
        }
        public 
    void paintComponent(Graphics g) {
            
    super.paintComponent(g);
            
    int w getWidth();
            
    int h getHeight();
            
    g.drawImage(new ImageIcon(img).getImage(), 00whthis);
        }
    }

    public class 
    Finestra extends JFrame{
    private 
    JPanel sfondo;

    public 
    Finestra(String titoloString icoString sfint wint hboolean visibboolean title){
            
    super(titolo);
            if(
    w<0w=getScreenWidth()/2//metodo creato da me
            
    if(h<0h=getScreenHeight()/2//metodo creato da me
            
    if(ico.length()>0this.setIconImage(new ImageIcon(ico).getImage());
            
    this.setSize(wh);
            
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            
    this.setUndecorated(!title);
            
    sfondo = new Sfondo(sf);
            
    this.getContentPane().add(sfondo);
            if (
    visibthis.setVisible(true);
        }
        public 
    void cambiaSfondo(String sf){
           
    sfondo.setImage(sf);
        }

    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  3. #3
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    setImage non appartiene a JPanel...grazie al tuo aiuto però ho risolto così
    Codice PHP:
        private JPanel sfondo;
        public 
    Finestra(String titoloString icoString sfint wint hboolean visibboolean title){
            
    super(titolo);
            if(
    w<0w=getScreenWidth()/2;
            if(
    h<0h=getScreenHeight()/2;
            if(
    ico.length()>0this.setIconImage(new ImageIcon(ico).getImage());
            
    this.setSize(wh);
            
    this.setDefaultCloseOperation(EXIT_ON_CLOSE);
            
    this.setUndecorated(!title);
            
    sfondo = new Sfondo(sf);
            
    this.getContentPane().add(sfondo);
            if (
    visibthis.setVisible(true);
        }
        public 
    void cambiaSfondo(String sf){
            
    this.getContentPane().remove(sfondo);
            
    sfondo = new Sfondo(sf);
            
    this.getContentPane().add(sfondo);
        }

    però rimane il problema che non so se i componenti vengono eliminati

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    o sfondo diventa un oggetto di tipo Sfondo...
    oppure fa un cast

    public void cambiaSfondo(String sf){
    ((Sfondo)sfondo).setImage(sf);
    }
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  5. #5
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    ma se non è definito per JPanel perchè dovrebbe esserlo per sfondo? cmq sì, anche eclipse mi dice che non è definito per tale tipo

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    Le cose sono due, perdonami ma nn voglio offenderti:
    1 - o tu nn sia che vuol dire ereditarietà e ciò che essa implica
    2 - o tu nn messo sul tuo sorgente il emtodo setImage sulla classe Sfondo, cosa che io ho fatto


    ma se non è definito per JPanel perchè dovrebbe esserlo per sfondo? cmq sì, anche eclipse mi dice che non è definito per tale tipo
    questa affermazione avrebbe senso al contrario...questo mi fa capire che di ereditarietà non ne sai un granché. se sfondo estende jpanel, assume tutti metodi (e proprietà) di jpanel e IN + I METODI CHE DICO IO!!!!
    io ho messo il metodo setImage e fidati che funziona
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  7. #7
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    perdonami...non avevo visto che lo avevi aggiunto! non ci avevo proprio fatto caso...
    di ereditarietà sto ok....ma non avendo letto che a Sfondo lo avevi aggiunto la mia frase era molto legittima(se non funziona dalla madre e in quella che estendo eredito tutti i metodi perchè dovrebbe andare?(considerando che non avevo visto l'aggiunta))

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2008
    Messaggi
    813
    e l'avevo capito che nn avevi visto il metodo...
    ma funziona?
    Nell'anno 1968 è bastata la potenza di due Commodore 64 per lanciare con successo una navicella sulla Luna; nell'anno 2007 ci vogliono la potenza di un processore quad core 3.30 GHz e 3 Gb di RAM (requisiti minimi ufficiali) per utilizzare Windows Vista. Qualcosa deve essere andato storto!

  9. #9
    Utente di HTML.it L'avatar di oronze
    Registrato dal
    Jun 2001
    Messaggi
    3,543
    Originariamente inviato da Hysoka
    e l'avevo capito che nn avevi visto il metodo...
    ma funziona?
    ah..si si...grazie...poi per spiegarti il malinteso mi sono dimenticato di dirti che era ok!
    sto un po' fuso in sto periodo!

    No ai layout tabellari!

    Insulto libero: http://forum.html.it/forum/showthread.php?s=&postid=12524872#post12524872

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.