Newsgroup: it.comp.java
Titolo: problemi con jpanel

Salve!
Sto cercando di fare un programma che abbia la stessa interfaccia di un 
wizard, con i suoi bei pulsanti "next", "prev" e un pannello centrale 
che cambia a seconda delle scelte dell'utente.
Il problema e' che non riesco a fare in modo che il pannello centrale 
cambi, senza dover ogni volta distruggere il frame e disegnare tutto, 
bottoni "next" e "prev" compresi.
La mia idea era quella di ricevere un reference ad un pannello ogni 
volta diverso, a seconda dello "step", ma non riesco a realizzarlo.
Questo e' uno straccio di codice che ho scritto (ma che non funziona):
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MyTool extends JFrame {
     JPanel tmpPan;
     static int step = 0;
     public MyTool() {
         JPanel p1 = new JPanel();
         JButton next, back, cancel;
         back = new JButton("<< back");
         back.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
                 step--;
                 if (step == 1) {
                     tmpPan = new JPanel();
                     tmpPan.add(new JLabel("step1"));
                     repaint();
                 } else if (step == 2) {
                     tmpPan = new JPanel();
                     tmpPan.add(new JLabel("step2"));
                     repaint();
                 }
             }
         });
         next = new JButton("next >>");
         next.addActionListener(new ActionListener() {
             public void actionPerformed(ActionEvent e) {
                 step++;
                 if (step == 1) {
                     tmpPan = new JPanel();
                     tmpPan.add(new JLabel("step1"));
                     repaint();
                 } else if (step == 2) {
                     tmpPan = new JPanel();
                     tmpPan.add(new JLabel("step2"));
                     repaint();
                 }
             }
         });
         cancel = new JButton("cancel");
         tmpPan = new JPanel();
         tmpPan.add(new JLabel("hello!"));
         p1.add(tmpPan);
         p1.add(back);
         p1.add(next);
         p1.add(cancel);
         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         getContentPane().add(p1);
         pack();
         setVisible(true);
     }
     public static void main(String[] args) {
         try {
 
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
         } catch (Exception ex) {
         } finally {
             new MyTool();
         }
     }
}
Qualcuno sa dirmi se sono sulla strada giusta, o se c'e' un modo piu' 
intelligente per farlo? Qualche link? Grazie.
shinya.
-- 
"The Prince alone sees the whole. And the whole is nothing. Completely 
in ruins. What they build and what they will build, what they do and 
what they will do, is delusion and lies. Under construction, everything 
is only half complete. In ruins, all is complete." - Werckmeister Harmonies

 ha scritto nel messaggio
news:ueNde.1325703$35.49...@news4.tin.it...


shinya wrote:
 > Qualcuno sa dirmi se sono sulla strada giusta, o se c'e' un modo piu' 
intelligente per farlo? Qualche link? Grazie.
Aggiungere e togliere componenti al volo dai pannelli personalmente non 
mi sembra mai una buona strada. Il wizard IMHO è una di quelle occasioni 
in cui il CardLayout dà il meglio di sè.
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/CardLayout.html
pole
-- 
ammentos - a lightweight persistence framework for JDK5
http://www.sourceforge.net/projects/ammentos
http://ammentos.biobytes.it