Ciao, sono finalmente riuscito a trovare un po di tempo per tornare al progetto e ho fatto un po di modifiche; ho deciso di utilizzare un JTabbedPane e devo dire che in effetti è visivamente molto più bello di quello che avevo in mente io.
Ora però ho un nuovo piccolo problema.. Riesco a inserire una sola pagina
Ti faccio vedere il codice:
codice:
public class Operazione_scelta extends JPanel implements ItemListener, ActionListener {
public JTabbedPane Pagina;
public JFrame jfp;
public Container cont_jfp;
JButton Fatto= new JButton("Fatto"), Fine= new JButton("Fine");
String campi[];
String nomi_pagine[] = {"Accesso", "Assegnata", "Docente", "Laboratorio",
"Locale", "Permesso", "Personale", "Postazione_L", "Postazione_V",
"Prenotazione", "Risorsa", "Studente", "Tipo", "Utente", "Esci"};
/** Crea una nuova finestra composta da pagine **/
public void crea_finestra_con_pagine(String Titolo) {
int alt=200, lung=800;
jfp= Crea_finestra.crea_JF("Menù --> " + Titolo, lung, alt);
cont_jfp = jfp.getContentPane();
//Per ogni pagina, va in Inserisci e utilizza uno Switch Case per conoscere
//i campi che andranno a popolare la finestra
for (int i=0; i<nomi_pagine.length; i++) {
campi= Inserisci.Trova_campi(i);
Aggiungi_pagina(nomi_pagine[i], campi, jfp);
}
// campi= Inserisci.Trova_campi(0);
// Aggiungi_pagina(nomi_pagine[0], campi, jfp);
}
//Aggiunge una nuova pagina al frame
public void Aggiungi_pagina(String Titolo, String[] campi, JFrame jfp) {
JPanel panel= Crea_finestra.crea_JP(jfp);
JLabel Lcampi[]= new JLabel[campi.length];
JTextField Tcampi[]= new JTextField[campi.length];
panel.setLayout(new GridLayout(campi.length+1, 2));
/**
* assegno al label "i" un testo
* aggiungo il label al pannello
* faccio la stessa cosa con la casella di testo
**/
for(int j= 0; j<campi.length; j++) {
Lcampi[j] = new JLabel(campi[j]);
panel.add(Lcampi[j]);
Tcampi[j]= new JTextField("inserire testo...");
panel.add(Tcampi[j]);
}
Fatto= new JButton("Fatto");
Fine= new JButton("Esci");
panel.add(Fatto);
panel.add(Fine);
Fatto.addActionListener(this);
Fine.addActionListener(this);
Pagina= new JTabbedPane();
Pagina.addChangeListener(new TabListener());
Pagina.addTab(Titolo, panel);
jfp.getContentPane().add(Pagina);
jfp.pack();
panel.setVisible(true);
}
public void actionPerformed (ActionEvent ae) {
if(ae.getSource()== Fatto) {
System.out.println("Hai premuto su Fatto.");
}
if(ae.getSource()== Fine) {
this.setVisible(false);
System.exit(0);
}
}
public void itemStateChanged(ItemEvent ae) {
}
}
Ho provato a inserire una pagina singola e ci sono riuscito senza troppi problemi utilizzando quelle che ora sono righe commentate
codice:
// campi= Inserisci.Trova_campi(0);
// Aggiungi_pagina(nomi_pagine[0], campi, jfp);
Ma se cerco di mettere anche le altre, succede che per meno di mezzo secondo vedo diverse finestre che si aprono e poi il programma termina senza segnalare nulla.
Hai idea di dove sia l'errore?