Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50

    [Java] Array di bottoni

    Salve a tutti
    Vi chiedo aiuto perché è un giorno che sto cercando di capire cosa sbaglio, ma non riesco proprio a capire

    Sto cercando fare un semplice array di bottoni che, a seconda del bottone premuto, mi dovrà mandare ad altre finestre
    Il problema è che dei 14 bottoni che gli dico di fare, mi mostra solo l'ultimo, il quale occupa tutta la finestra.

    codice:
    public class scelta_inserisci extends JPanel implements ItemListener, ActionListener {
    
    	JButton[] bottoni;
    
    	public void s_inserisci() {
    
    		Crea_JFP cjf= new Crea_JFP();
    		JFrame jf= new JFrame();
    		jf= cjf.crea_JF("Menù --> Inserisci");
    //Creo il JFrame
    
    		pannello p = new pannello();
    		p= cjf.crea_JP(jf);
    		Container cont_jf = jf.getContentPane(); 		
    //Creo il JPanel e lo associo al Container
    
    		int num_b = 14;
    		bottoni= new JButton[num_b];
    		String testo_b[] = {"Accesso", "Assegnata", "Docente", "Laboratorio", "Locale", "Permesso", "Personale", 
    						"Postazione_L", "Postazione_V", "Prenotazione", "Risorsa", "Studente", "Tipo", "Utente"}; 
    	
    		for(int i= 0; i< num_b; i++) {
    			bottoni[i] = new JButton(String.valueOf(testo_b[i]));
    			cont_jf.add(bottoni[i]);
    			bottoni[i].addActionListener(this);	
    		} 
    
    	}
    Qualche consiglio?

  2. #2
    Scusa ma hai dichiarato un layout?
    Non sono un mago (anzi), comunque l'errore dev'essere dopo "//Creo il Panel e lo inserisco nel container"...ti posto un codice, prova a vedere se c'è qualcosa di diverso...

    codice:
    	bottone = new JButton[9];
    
    	// inizializzo i 6 bottoni e li aggiungo al pannelloBottoni.
    	// Etichetta dei bottoni:
    	String[] nomeBottone = {"Componi data", "Data corrente", "Controllo data", 
    				"Aggiungi tempo", "Anno bisestile", "Settimana del mese",
    				"Settimana dell'anno", "Giorno dell'anno", "Giradata"};
    
    	// Colore di sfondo dei bottoni: 
    	Color[] coloreBottone = {Color.red, Color.white, Color.yellow,
    				 Color.cyan, Color.green, Color.magenta,
    				Color.red, Color.white, Color.yellow};
    
    	for (int i = 0; i < bottone.length; i++) {
    	    bottone[i] = new JButton(nomeBottone[i]);
    	    bottone[i].setBackground(coloreBottone[i]);
    	    pannelloBottoni.add(bottone[i]);}
    Gato

  3. #3
    Per creare alcuni componenti utilizzi una serie di classi delle quali ignoro il comportamento in quanto non ne hai postato il codice.
    Comunque crei un pannello che poi non utilizzi da nessuna parte. La classe pannello (i nomi delle classi, per buona regola, devono avere l'iniziale maiuscola) immagino estenda da JPanel. A questo punto devi aggiungere il pannello al frame:

    codice:
    jf.getContentPane().add(p);
    ed aggiungere i bottoni al pannello e NON al frame direttamente:

    codice:
    for(int i= 0; i< num_b; i++) {
    	bottoni[i] = new JButton(String.valueOf(testo_b[i]));
    	p.add(bottoni[i]);
    	bottoni[i].addActionListener(this);	
    }
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50
    Ecco le altre classi:

    codice:
    public class MainClass {
    
    	public static void main(String[] args) {		
    
    		Crea_JFP cjf = new Crea_JFP();
    		JFrame jf = new JFrame();
    
    		jf= cjf.crea_JF("Menù");
    
    		pannello p = new pannello();
    		p= cjf.crea_JP(jf);
    		p.pannello_menu();
    
    	}	
    }
    codice:
    public class Crea_JFP {
    
    	public JFrame crea_JF(String Titolo) {
    
    		JFrame jf = new JFrame(Titolo);
    
    		jf.setBounds(400, 100, 400, 200);
    		jf.setVisible(true);
    		return(jf);
    	}
    	
    	public pannello crea_JP(JFrame jf) {
    
    		Container cont_jf = jf.getContentPane(); 
    		pannello p = new pannello();
    		cont_jf.add(p);
    		return (p);
    	}
    }
    codice:
    public class pannello extends JPanel implements ItemListener, ActionListener {
    
    	JButton inserimento, modifica, cancellazione, uscita;
    
    	public void pannello_menu() {
    		
    		inserimento= new JButton("Inserisci");
    		modifica= new JButton("modifica");
    		cancellazione= new JButton("Cancella");
    		uscita= new JButton("Esci");
    
    		inserimento.addActionListener(this);
    		modifica.addActionListener(this);
    		cancellazione.addActionListener(this);
    		uscita.addActionListener(this);
    		add(inserimento);	
    		add(modifica);
    		add(cancellazione);	
    		add(uscita);	
    	}
    	
    	public void actionPerformed(ActionEvent e) {
    		
    		if(e.getSource()== inserimento) {
    			scelta_inserisci si= new scelta_inserisci();
    			si.s_inserisci();
    		}
    		if(e.getSource()== modifica) {
    			System.out.print("Dovrebbe fare la modifica.\n");
    		}
    		if(e.getSource()== cancellazione) {
    			System.out.print("Dovrebbe fare la cancellazione.\n");
    		}
    		if(e.getSource()== uscita) {
    			this.setVisible(false);
    			System.exit(0);
    		}
    	}
    
    	public void itemStateChanged(ItemEvent arg0) {
    	}
    }
    Ora, secondo la mia mente contorta il programma, una volta entrato nel Menu Inserisci, dovrebbe comportarsi così:

    1- Crea un JFrame chiamato "jf" utilizzando la classe Crea_JFP

    2- Chiama la classe Crea_JFP che crea il container "cont_jf" associato a "jf"

    3- Crea un pannello "p" che viene aggiunto a "cont_jf"

    4- Ritorno a scelta_inserisci

    5- Creo il nuovo Container "cont_jf" per "jf"

    6- Aggiungo i bottoni


    Il secondo container del punto 5 l'ho messo perché altrimenti non mi appariva nulla quando, poche righe sotto, mettevo: add(bottoni[i]);
    che infatti è poi stato cambiato con cont_jf.add(bottoni[i]);

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50
    ed aggiungere i bottoni al pannello e NON al frame direttamente:

    codice:
    for(int i= 0; i< num_b; i++) {
    	bottoni[i] = new JButton(String.valueOf(testo_b[i]));
    	p.add(bottoni[i]);
    	bottoni[i].addActionListener(this);	
    }
    "p" è il pannello a cui devo aggiungere i bottoni

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50
    Nessuna idea?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50
    Ok, ho risolto.. In effetti aggiungevo i bottoni direttamente al frame, senza passare per il pannello..

  8. #8
    Ti sarebbe bastato leggere attentamente il mio post precedente. Era proprio ciò che ti avevo fatto notare.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    50
    Hai ragione, mea maxima culpa.. anche guardando la tua correzione, non ho visto quel "p." che mi fregava

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.