Questo è il codice..
Io ho creato il programma in modo che ad ogni bottone premuto si apra una nuova finestra.. Ora però cercare di fare una cosa più carina e fare tutto in un unica finestra.
Il mio problema è che non so come lavorare sul pannello dal momento che premendo su un bottone, non riesco a mettere negli actionPerformed un riferimento a esso;
Prima intendevo dire che, attivando la actionPerformed, sono costretto a crearmi un nuovo pannello ogni volta perché non so come passargli quello vecchio (insomma riesco a "portarmelo dietro")
Sono sicuro che esiste una soluzione (che sicuramente sarà anche una baggianata), ma non la conosco.
Comunque ecco il codice (ho postato tutto, ma penso bastassero le prime 3 o 4 classi per esporre il mio problema)
codice:
public class MainClass {
public static void main(String[] args) {
Crea_finestra fin = new Crea_finestra();
JFrame jf = new JFrame();
int alt=200, lung=400;
String Titolo= "Menù";
jf= fin.crea_JF (Titolo, lung, alt);
String campi[] = {"Inserisci", "Modifica", "Cancella", "Esci"};
JPanel p = new JPanel();
p= fin.crea_JP(jf);
Crea_menu cm= new Crea_menu();
cm.pannello_menu(p, campi, 4, Titolo);
}
}
codice:
public class Crea_finestra {
/**Crea un frame **/
public JFrame crea_JF(String Titolo,int lung, int alt) {
JFrame jf = new JFrame(Titolo);
jf.setBounds(400, 100, lung, alt);
jf.setVisible(true);
return(jf);
}
/**Crea un pannello **/
public JPanel crea_JP(JFrame jf) {
Container cont_jf = jf.getContentPane();
JPanel p = new JPanel();
cont_jf.add(p);
jf.setVisible(true);
return(p);
}
}
codice:
public class Crea_menu extends JPanel implements ItemListener, ActionListener {
JButton bottoni[];
/**Forma il pannello Menù **/
public void pannello_menu(JPanel p, String campi[], int num_campi, String Titolo) {
p.removeAll();
bottoni = new JButton[num_campi];
for(int i= 0; i< num_campi; i++) {
bottoni[i] = new JButton(campi[i]);
bottoni[i].addActionListener(this);
p.add(bottoni[i]);
}
p.repaint();
p.validate();
p.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()== bottoni[0]) {
Scelta_inserisci si= new Scelta_inserisci();
si.s_inserisci();
}
if(e.getSource()== bottoni[1]) {
System.out.print("Dovrebbe fare la modifica.\n");
// Modifica_Utente MU= new Modifica_Utente();
// MU.Modifica();
}
if(e.getSource()== bottoni[2]) {
System.out.print("Dovrebbe fare la cancellazione.\n");
// Cancella_Utente CU= new Cancella_Utente();
// CU.Cancella();
}
if(e.getSource()== bottoni[3]) {
this.setVisible(false);
System.exit(0);
}
}
public void itemStateChanged(ItemEvent arg0) {
}
}
codice:
public class Scelta_inserisci extends JPanel implements ItemListener, ActionListener {
JButton[] bottoni;
int num_b = 15;
String testo_b[] = {"Accesso", "Assegnata", "Docente", "Laboratorio", "Locale", "Permesso", "Personale",
"Postazione_L", "Postazione_V", "Prenotazione", "Risorsa", "Studente", "Tipo", "Utente", "Esci"};
/** Forma il pannello Menù --> Inserisci **/
public void s_inserisci() {
Crea_finestra cjf= new Crea_finestra();
JFrame jf= new JFrame();
int alt=200, lung=800;
jf= cjf.crea_JF("Menù --> Inserisci", lung, alt);
JPanel p = new JPanel();
p= cjf.crea_JP(jf);
Container cont_jf = jf.getContentPane();
bottoni = new JButton[num_b];
for(int i= 0; i< num_b; i++) {
bottoni[i] = new JButton(testo_b[i]);
bottoni[i].addActionListener(this);
p.add(bottoni[i]);
}
}
public void actionPerformed (ActionEvent ae) {
Inserisci Ins= new Inserisci();
for (int i=0; i<num_b; i++) {
if(ae.getSource()== bottoni[i]) {
Ins.pannelli_inserisci(i); }
}
}
public void itemStateChanged(ItemEvent ae) {
}
}
codice:
public class Inserisci extends JPanel implements ItemListener, ActionListener {
JLabel lab[];
JTextField tf[];
int num_campi;
JButton fatto, uscita;
String Risultati[], Titolo;
/** fornisce le specifiche per ogni tipo di pannello **/
public void pannelli_inserisci(int valore) {
switch(valore) {
case 0: {
String campi[]= {"Data accesso", "Ora accesso", "Tessera", "Denominazione", "Codice tipo", "Riuscito", "Giorno"};
String Titolo= "Accesso";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 1: {
String campi[]= {"Mese", "Numero postazione vincolata", "Numero laboratorio", "Denominazione",
"Codice studente", "Codice docente"};
String Titolo= "Assegnata";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 2: {
String campi[]= {"Codice docente", "Tessera"};
String Titolo= "Docente";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 3: {
String campi[]= {"Numero laboratorio", "Denominazione", "Codice personale", "Codice docente"};
String Titolo= "Laboratorio";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 4: {
String campi[]= {"Denominazione", "Via"};
String Titolo= "Locale";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 5: {
String campi[]= {"Tessera", "Denominazione", "Codice Tipo"};
String Titolo= "Permesso";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 6: {
String campi[]= {"Codice personale", "Tecnico (T/F)", "Tessera"};
String Titolo= "Personale";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 7: {
String campi[]= {"Numero postazione","Numero laboratorio", "Denominazione"};
String Titolo= "Postazione_L";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 8: {
String campi[]= {"Numero postazione","Numero laboratorio", "Denominazione"};
String Titolo= "Postazione_V";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 9: {
String campi[]= {"Numero postazione", "Denominazione", "Numero laboratorio", "Codice studente",
"Codice docente","Data inizio","Data fine","Orario inizio","Orario fine", "Giorno"};
String Titolo= "Prenotazione";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 10: {
String campi[]= {"Descrizione","Numero laboratorio", "Denominazione", "Codice risorsa"};
String Titolo= "Risorsa";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 11: {
String campi[]= {"Codice studente", "Tessera"};
String Titolo= "Studente";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 12: {
String campi[]= {"Codice tipo", "Giorno", "Orario inizio", "Orario fine"};
String Titolo= "Tipo";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 13: {
String campi[]= {"Nome", "Cognome", "Citta", "Tessera"};
String Titolo= "Utente";
Inserisci pi= new Inserisci();
pi.crea_pannello_inserisci(campi, campi.length, Titolo);
}; break;
case 14: System.exit(0); break;
default: System.out.println("Errore.");break;
}
}
/**Crea il pannello**/
public void crea_pannello_inserisci(String campi[], int num_campi, String Titolo) {
Crea_finestra cjf= new Crea_finestra();
JFrame jf= new JFrame();
int lung=700, alt= 200;
jf= cjf.crea_JF("Menù --> Inserisci --> " + Titolo, lung, alt);
JPanel p = new JPanel();
p= cjf.crea_JP(jf);
Container cont_jf = jf.getContentPane();
/** lab e tf sono gli array di label o caselle di testo **/
lab = new JLabel[num_campi];
tf = new JTextField[num_campi];
/**
* assegno al label "i" un testo
* aggiungo il label al pannello
* faccio la stessa cosa con la casella di testo
**/
for(int i= 0; i< num_campi; i++) {
lab[i] = new JLabel(campi[i]);
p.add(lab[i]);
tf[i]= new JTextField("inserire testo..");
p.add(tf[i]);
}
fatto= new JButton("Fatto");
p.add(fatto);
uscita= new JButton("Esci");
p.add(uscita);
}
public void actionPerformed (ActionEvent ae) {
if(ae.getSource()== fatto) {
for(int i= 0; i< num_campi; i++) {
Risultati[i]= tf[i].getText();
tf[i].setText(" ");
}
Inserisci con = new Inserisci();
con.connetti(Risultati);
}
if(ae.getSource()== uscita) {
System.exit(0);
}
}
/** Effettua la connessione con il database **/
public void connetti(String Risultati[]){
String sql = "INSERT INTO " + Titolo + " VALUES ('";
for (int i=0; i< num_campi-1; i++) {
sql= sql + Risultati[i] + "', '" ;
}
sql= sql + Risultati[num_campi-1] + "')'";
try {
Class.forName ("org.postgresql.Driver");
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/UniversDB", "muser", "pw");
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
stmt.close();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
catch (SQLException e) {
e.printStackTrace();
}
}
public void itemStateChanged(ItemEvent arg0) {
}
}