Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Passaggio di parametri

  1. #1

    Passaggio di parametri

    Ragazzi scusate sono alle prime armi con java e devo realizzare una piccola applicazione molto semplice...sono quasi alla fine ma stò sbattendo il muso su un problema che dovrebbe essere talmente banale da vergognarsi a chiederlo. Devo fare 2 pannellini dentro un JFrame, uno in alto che contenga un pulsante e l'altro in basso vuoto colorato di rosso. In quest'ultimo devo realizzare un cardLayout che al pulsante sul bottone del primo pannello carichi un secondo pannello vuoto giallo che sostituirà quello rosso. posto il codice:
    codice:
    class  ContenitoreCard extends JFrame {
    	ContenitoreCard(){
    		this.setResizable(false);
    		this.setBounds(240, 200, 800, 500);
    		Container contenuto = this.getContentPane();
    		contenuto.setLayout(null);
    		Pannello pan = new Pannello();
    		contenuto.add(pan);
    		PanelB panB = new PanelB();
    		contenuto.add(panB);
    	}
    	
    
    
    class Pannello extends JPanel {
    	CardLayout cl = new CardLayout();
    	
    	Pannello() {
    		   this.setLayout(cl);
    		   this.setBounds(0,100,800,500);
    		   this.setBackground(Color.blue);
    		   Pannello1 p1 = new Pannello1();
    		   p1.setName("pan1");
    		   cl.addLayoutComponent(p1, "pan1");
    	}
    	 void mostra() {
    		cl.show(this, "pan1");
    	}
    }
    
    
    
    class PanelB extends JPanel implements ActionListener {
    	JButton bot = new JButton("Cambia");
    	
    	
    	PanelB() {
    		   this.setLayout(null);
    		   this.setBounds(0,0,800,100);
    		   this.setBackground(Color.red);
    		   bot.setBounds(20, 20, 100, 25);
    		   bot.addActionListener(this);
    		   this.add(bot);
    	}
    	
    	public void actionPerformed (ActionEvent e) {
    		 Object src = e.getSource();
    		 if (src==bot) {
    			 mostra(); // qui da errore!
    		 }
    	}
    }
    
    class Pannello1 extends JPanel {
    	
    	
    	Pannello1() {
    		   this.setLayout(null);
    		   this.setBounds(0,100,800,500);
    		   this.setBackground(Color.red);
    		   
    	}
    }
    
    
    
    public static void main(String[] args) {
    	   ContenitoreCard frame = new ContenitoreCard();
    	   frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
    	   frame.setVisible(true);
       }
    }
    Ho una vaga idea che dovrei passare come parametro la classe Pannello alla classe PanelB in modo tale da fargli vedere il metodo mostra(). Ho provato in vari modi ma non c'è verso..
    Vi prego di aiutarmi..
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Da ContenitoreCardContenitoreCard

    codice:
    Pannello pan = new Pannello();
    contenuto.add(pan);
    PanelB panB = new PanelB(pan);

    codice:
    class PanelB extends JPanel implements ActionListener {
    	JButton bot = new JButton("Cambia");
    	Pannello pan;	
    
    PanelB(Pannello pan) {
    		this.pan = pan;
    		this.setLayout(null);
    		this.setBounds(0,0,800,100);
    		this.setBackground(Color.red);
    		bot.setBounds(20, 20, 100, 25);
    		bot.addActionListener(this);
    		this.add(bot);
    	}
    
    	...
    }
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  3. #3
    Grazie di cuore per la tempestività ed efficacia! ora riesco a richiamare il metodo ma il cardLayout non funziona non so perchè: Se nel metodo mostra metto:
    codice:
    cl.show(this, "pan1");
    System.out.println("Ciao");
    La scirtta ciao viene stampata correttamente alla pessione sul bottone, ma il pannello rimane quello....
    Grazie Ancora

  4. #4
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Premetto subito che è da un bel po' che non lavoro con awt e swing...

    Quindi prendi quello che segue come una bella porcheria...

    Codice PHP:
    import java.awt.CardLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;

    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;

    public class 
    ContenitoreCard extends JFrame
    {
        
    ContenitoreCard()
        {
        
    setResizable(false);
        
    setBounds(240200800500);
        
    Container contenuto getContentPane();
        
        
    contenuto.setLayout(null);

        
    Pannello pan = new Pannello();
        
    contenuto.add(pan);
        
    PanelB panB = new PanelB(pan);
        
    contenuto.add(panB);
        }
            


        class 
    Pannello extends JPanel
        
    {
            
    CardLayout cl = new CardLayout();
            
            
    Pannello()
            {
                
    setLayout(cl);
                
    setBounds(0,100,800,500);
                
    setBackground(Color.blue);
                
                
    Card yellowCard = new Card(Color.yellow);
                
    //yellowCard.setName("yellow");
                
    add(yellowCard"yellow");
                
                
                
    Card greenCard = new Card(Color.green);
                
    //greenCard.setName("green");
                
    add(greenCard"green");
                
                
    //cl.addLayoutComponent(p1, "pan1");
            
    }
            
            
    void mostra(String color)
            {
                
    cl.show(thiscolor);
            }

        }



        class 
    PanelB extends JPanel implements ActionListener
        
    {
            
    JButton bot;
            
    Pannello pan;
            
            
    PanelB(Pannello pan)
            {
                
    this.pan=pan;
                
    setLayout(null);
                
    setBounds(0,0,800,100);
                
    setBackground(Color.red);
                
                
    bot = new JButton("Cambia");
                
    bot.setBounds(202010025);
                
    bot.addActionListener(this);
                
    add(bot);
            }
            
            public 
    void actionPerformed (ActionEvent e)
            {
                
    Object src e.getSource();
                if (
    src==bot) {
                    
    pan.mostra("green");
                }
            }
        }

        class 
    Card extends JPanel
        
    {
            
            
            
    Card(Color c)
            {
                
    //setLayout(null);
                
    setBounds(0,100,800,500);
                
    setBackground(c);
                   
            }
        }



        public static 
    void main(String[] args)
        {
            
    ContenitoreCard frame = new ContenitoreCard();
            
    frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
            
    frame.setVisible(true);
        }

    Ti consiglio vivamente di dare una bella occhiata qui...

    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

  5. #5
    Grazie ancora una volta!! Sei gentilissimo! Il fatto è che ho visto alcuni forum in cui vengono utlizzati metodi diversi tra loro: alcuni utilizzano (Nel pannello con setLayout(cl) atto a contenere le schede o pannelli che dir si voglia) il metodo:

    codice:
    cl.add(String,Object)
    altri invece utilizzano:
    codice:
    cl.addLayoutComponent(String,Object)
    altri ancora:
    codice:
    cl.addLayoutComponent(Object,String)
    e poi sei arrivato tu con il semplice:
    codice:
    add(Object,String)
    Per me che sono alle prime armi è come bere un litro di vino...
    In ogni caso il tuo metodo funziona e utilizzerò quello!!

    Grazie ancora

  6. #6
    Utente di HTML.it L'avatar di Pastore12
    Registrato dal
    Oct 2008
    Messaggi
    1,051
    Originariamente inviato da Alessia88web
    Per me che sono alle prime armi è come bere un litro di vino...
    In ogni caso il tuo metodo funziona e utilizzerò quello!!
    Grazie ancora
    Nel post precedente ti avevo segnalato il tutorial della sun, per far passare la sbronza è il rimedio migliore!
    "Ethics are to me something private. Whenever you use it as an argument for why somebody_else should do something, you’re no longer being ethical, you’re just being a sanctimonious dick-head"
    Linus Torvalds

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