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:
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