Oppure

Loading
15/11/12 17:02
matrix25
Buonasera ragazzi.
Ho un problema per quanto riguarda la gestione di pannelli e frame. Da poco uso Java quindi non ho molta conoscenza delle sue librerie. Il mio problema è nella realizzazione di in un menu di un gioco in cui devo in un' unica finestra voglio avere più schermate. Ho realizzato una classe ereditando JFrame come è solito fare e ogni schermata del menu è un pannello. Ogni pannello ha dei suoi bottoni ecc.. Ho gestito ogni schermata con un metodo nella classe giocando con il setVisible() per i pannelli. Solo che ala schermata che corrisponde al metodo MenuPlayerSingle il vecchio pannello non si rende invisibile e non compare il nuovo ( che per ora è vuoto). Vorrei sapere perchè non va e se per caso conoscete un metodo migliore per gestire in generale un JFrame con più pannelli.
Questo è il codice:
package javaapplication5;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;





  class PrincipalMenu extends JFrame
{
     //Image screen;
   protected JPanel pan1 = new JPanel();
   protected JPanel pan2 = new JPanel();
   protected JPanel pan3 = new JPanel();
   protected JPanel pan4 = new JPanel();
   protected JPanel pan5 = new JPanel();
   protected JPanel pan6 = new JPanel();
   //ImageIcon img = new ImageIcon();
    public PrincipalMenu()
    {
     // img.getClass().getResource("sfondoprovvisorio.png");
     // screen = img.getImage();
      
      setSize(800,600);
      setLocation(200,100);
      pan1.setLayout(null);
      pan2.setLayout(null);
     /* pan3.setLayout(null);
      pan4.setLayout(null);
      pan5.setLayout(null);
      pan6.setLayout(null);*/
      setVisible(true);
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      setResizable(false);
 
    }
    public void start()
    {
      pan1.setVisible(true);
     pan2.setVisible(false);
     pan3.setVisible(false);
     pan4.setVisible(false);
      pan5.setVisible(false);
      pan6.setVisible(false);
       pan1.setOpaque(false);
       pan2.setOpaque(true);
     JButton play = new JButton("GIOCA");
     JButton help = new JButton("ISTRUZIONI");
     JButton quit = new JButton("ESCI");
     play.setEnabled(true);
     help.setEnabled(true);
     quit.setEnabled(true);
      pan1.add(play);
      pan1.add(help);
      pan1.add(quit);
     play.setBounds(300,200,200,50);
     help.setBounds(300,300,200,50);
     quit.setBounds(300,400,200,50);
     play.addActionListener(new GestionButton());
     quit.addActionListener(new GestionButton());
     help.addActionListener(new GestionButton());
     this.add(pan1);
   }
    private void menuHelp()
    {

    pan1.setVisible(false);
     pan2.setVisible(true);
     pan3.setVisible(false);
     pan4.setVisible(false);
      pan5.setVisible(false);
      pan6.setVisible(false);
        pan2.setOpaque(false);
        pan1.setOpaque(true);
      JButton back = new JButton("INDIETRO");
      back.setEnabled(true);
      back.setBounds(300,400,200,50);
      pan2.add(back);
      back.addActionListener(new GestionButton());
      this.add(pan2);
    }
  private void menuPlay()
    {
      pan1.setVisible(false);
      pan2.setVisible(false);
      pan3.setVisible(true);
      pan4.setVisible(false);
      pan5.setVisible(false);
      pan6.setVisible(false);
      JButton back = new JButton("INDIETRO");
      JButton singlePlayer = new JButton ("GIOCATORE SINGOLO");
      JButton multiPlayer = new JButton ("MULTIPLAYER");
      JButton multiPlayer2 = new JButton ("MULTIPLAYER IN RETE");
      singlePlayer.setBounds(300,200,200,50);
      multiPlayer.setBounds(300,300,200,50);
      multiPlayer2.setBounds(300,400,200,50);
      singlePlayer.setEnabled(true);
      multiPlayer.setEnabled(true);
      multiPlayer2.setEnabled(true);
      back.setEnabled(true);
      back.setBounds(630,500,120,50);
      pan3.add(back);
      pan3.add(singlePlayer);
      pan3.add(multiPlayer);
      pan3.add(multiPlayer2);
      back.addActionListener(new GestionButton());
      singlePlayer.addActionListener(new GestionButton());
      this.add(pan3); 
    }
     private void MenuSinglePlayer()
     {
         pan1.setVisible(false);
         pan2.setVisible(false);
        pan3.setVisible(false);
        pan4.setVisible(true); // Questo è il pannllo che non visualizza
        pan5.setVisible(false);
        pan6.setVisible(false);
         this.add(pan4);

     }
    /* private void MenuMultiPlayer(){}
     private void MenuMultiPlayerNet (){}*/
     
  
    class GestionButton implements ActionListener
   {
    public GestionButton() {}
    public void actionPerformed(ActionEvent e) {
        String button = e.getActionCommand();
        if(button.equals("GIOCA"))
        {
           menuPlay();
        }
       if(button.equals("ESCI"))
        {
            System.exit(0);
        }
        if(button.equals("ISTRUZIONI"))
        {
           menuHelp();
        }
      if(button.equals("INDIETRO"))
      {
          start();
      }
      if(button.equals("GIOCATORE SINGOLO"))
      {
          MenuSinglePlayer();
      }
    }
 }
}
  

public class JavaApplication5 {
    public static void main(String[] args) {
     PrincipalMenu menu = new PrincipalMenu();
      menu.start();

    }
}
Ultima modifica effettuata da matrix25 19/11/12 16:30
aaa
15/11/12 17:12
matrix25
Funziona cmq! Più che altro adesso vorrei sapere se questa strategia è corretta...grazie ^.^
aaa