Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente bannato
    Registrato dal
    Nov 2007
    Messaggi
    7

    Semplicissimo CardLayout

    Salve a tutti sono nuova! Ho da fare un semplicissimo programmino che mi cambi pannello a seconda del bottone che premo...ho un manualino di java che ho integrato con qualcosa che ho trovato sul web ma sono ad un punto morto..posto il codice
    codice:
    //contenitore
    public class FrameContenitore extends JFrame {
    	public FrameContenitore() {
    		this.setLayout(null);
    		this.setBounds(50, 50, 400,400);
                              
    		}
    	
    	public static void main(String arg[]) {
    		FrameContenitore frame = new FrameContenitore();
    		Bottoni bot = new Bottoni();
    		Centrale sotto = new Centrale();
    		frame.add(sotto);
    		frame.add(bot);
    		frame.setVisible(true);
    	}
    }
    //pannello1
    public class Centrale extends JPanel {
    	CardLayout cc;
    	public Centrale() {
    		cc = new CardLayout();
    		this.setBounds(0,100,400,300);
    		this.setLayout(cc);
    		this.setBackground(Color.gray);
    		Pannellino pan = new Pannellino();
    		cc.addLayoutComponent("1",pan);
    }
    	public void modifica() {
    	   cc.show(this, "1");
    	   this.repaint();
    	}
    	}
    //pannello bottoni
    public class Bottoni extends JPanel implements ActionListener {
    	private JButton bottone;
    	Centrale sotto;
    	public Bottoni() {
    		this.setLayout(null);
    		this.setBounds(0,0,400,100);
    		sotto = new Centrale();
    		bottone = new JButton();
                              bottone.setBounds(50,50,50,50);
                              bottone.addActionListener(this);
                 }
    		
    	}
    	
    	public void actionPerformed(ActionEvent evento){
    		Object sorgente = evento.getSource();
    		if (sorgente == bottone) {
    			sotto.modifica();
    		}
    				
    	}
    //pannello che dovrebbe sostituire il "pannello1" alla pressione sul bottone
    public class Pannellinoextends JPanel {
    		
    		public Pannellino() {
    			this.setBackground(Color.blue);
    			this.setBounds(0,100,400,300);
    			this.setLayout(null);
    	}
    Perche' non funziona?? Dov'e' l'errore?? (ho omesso i metodi paint per rendere il codice piu breve) cmq il mio contatto msn e' vanessacrazy@hotmail.it!
    Grazie

  2. #2
    Come hai strutturato il codice? E' tutto in un solo file?
    Dovresti innanzitutto creare tanti file separati quante sono le classi pubbliche che usi... o togliere i modificatori public dalle classi che non contengono il metodo main...
    Windows 7 x64 + Ubuntu Linux 10.10 (Default)
    In principio era il C...
    C/C++ & C# & JavaSE/EE Developer

  3. #3
    Utente bannato
    Registrato dal
    Nov 2007
    Messaggi
    7
    Ogni classe ha il suo file, lo sto' facendo con eclipse, sono in totale 4 file FrameContenitore.java, Centrale.java, Bottoni.java, Pannellino.java..
    Bo'...L'applicazione si carica e si vedono anche i bottoni...l'action performed funziona che la stringa di prova la stampa...

  4. #4
    Utente bannato
    Registrato dal
    Nov 2007
    Messaggi
    7
    Dio mio e' terribile!! Ma e' il linguaggio che e' una merda o sono io che non lo so usare??
    codice:
    public class Demo extends JPanel implements ActionListener{
      CardLayout cl = new CardLayout();
      JPanel welcomePane;
      JPanel balancePane;
     
      JButton balanceButton = new JButton();
      JButton welcomeButton = new JButton();
     
     public Demo() {
        this.setLayout(cl);
        this.setBounds(0, 100, 800,800);
        
        welcomePane = new JPanel();
        welcomePane.setLayout(null);
        welcomePane.setBackground(Color.red);
        welcomeButton.setText("Welcome");
       welcomeButton.setBounds(new Rectangle(90, 180, 196, 56));
        welcomeButton.addActionListener(this);
        welcomePane.setName("welcomePane");
        this.add("welcomePane",welcomePane);
        welcomePane.add(welcomeButton, null);
     
        balanceButton.setText("ShowBalance");
        balanceButton.setBounds(new Rectangle(154, 181, 196, 56));
        balanceButton.addActionListener(this);
     
        balancePane = new JPanel();
        balancePane.setLayout(null);
        balancePane.setBackground(Color.blue);
        balancePane.add(balanceButton, null);
     
        balancePane.setName("balancePane");
        this.add("balancePane",balancePane);
        
        Schifenza schifo = new Schifenza();
        schifo.setName("schifo");
        this.add("schifo",schifo);
     }
     
       
     
      public void actionPerformed(ActionEvent e) {
        if ( ( (JButton) e.getSource()).getText().equals("ShowBalance")) {
          showPanel(1);
        }
        else if ( ( (JButton) e.getSource()).getText().equals("Welcome")){
          showPanel(2);
        }
      }
     
      private void showPanel(int num) {
        if (num == 2) {
                cl.show(this, "balancePane");     
     else if (num == 1){
        	cl.show(this, "welcomePane");
        }
      }
    Cosi l'applicazione funziona...l'ascoltatore di eventi (e i bottoni che li generano) sono interni al pannello in cui ho il CardLayout e in cui le schede (pannellini con bottoni) si susseguono...ma se faccio come nel codice che ho postato nel primo messaggio (cioe' metto i bottoni e l'ascoltatore in un altro pannello e a seconda del bottone premuto richiamo una funzione modifica() nel mio pannello con card layout non succede nulla...
    Percheeeeeeeeeeeeee??? vi prego aiutate una dolce fanciulla..
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.