PDA

View Full Version : [Java] Gestione Panel


jdluk87
03-08-2009, 11:23
Salve a tutti non riesco a gestire multipli pannelli in java.
Quello che vorrei fare è avere una parte del frame (panelmenu) sempre fisso, tale pannello ha dei pulsanti, i quali se premuti devono far aprire un pannello(panel1,2...ecc...) dentro il mio frame.

Quello che ho pensato è:
1. caricare i vari pannelli nel frame stesso
2. usare un pannello fisso oltre a quello del menu in cui caricare di volta in volta un pannello diverso a seconda del pulsante premuto.

ps: una precisazione...i pannelli aperti saranno sempre 1, ovvero se ce n'è uno aperto e si preme un pulsante prima si chiude il vecchio e poi si apre il nuovo.

Quello che ho provato è:

getContentPane().remove(paneldefault);
getContentPane().add(panel1, BorderLayout.CENTER);
this.repaint();
getContentPane().validate();

oppure

paneldefault.rempve(panel1);
paneldefault.add(panel2);
this.repaint();
paneldefault.validate();

e ancora:

this.remove(panel1);
this.add(panel2, orderLayout.CENTER);
this.repaint;
this.validate();

Quello che sono riuscito a fare e l'eliminazione, ma non riesce mai ad aggiungere il nuovo pannello.

Spero mi sia spiegato bene.

Grazie a tutti.

banryu79
03-08-2009, 11:41
Al di la dei problemi specifici che hai illustrato, visto quello che vuoi fare avevi già preso in considerazione l'idea di usare un singolo JPanel in cui inserire componenti di tipo JTabbedPane? [link al tutorial] (http://java.sun.com/docs/books/tutorial/uiswing/components/tabbedpane.html)
Ti semplificheresti la vita.

Oppure forse quello che fa per te è l'uso del CardLayout? [altro tutorial] (http://java.sun.com/docs/books/tutorial/uiswing/layout/card.html)

Ciao ;)

jdluk87
03-08-2009, 12:58
i tabbedpane sarebbero l'ideale, solo che non so se posso togliere o rendere invisibili quei cosi li sopra...tipo la selezione del panel e fare la selezione attraverso bottoni fatti da me

jdluk87
03-08-2009, 13:22
credo di aver capito in parte il problema perchè eseguendo questo codice:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {

this.remove(jPanel1);
this.repaint();
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
panel1 pn1 = new panel1();
pn1.setVisible(true);
this.add(pn1);
this.repaint(); // TODO add your handling code here:
}

dove jPanel1 è quello gia presente sul frame effettivamente premendo button1 viene cancellato e poi con button2 torna, il problema sembra essere che se eseguo il tutto con dei panel creati da me non va...eppure io creo un nuovo file di tipo jPanel form...che dite??