Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.java > #9413

Re: Passare da un JPanel ad un altro...

Newsgroups it.comp.java
Date 2023-03-23 10:57 -0700
References (1 earlier) <k78iij$uhj$3@speranza.aioe.org> <c58a07f3-a520-46a0-8358-f6353e5daad0@googlegroups.com> <k7areu$b6d$2@speranza.aioe.org> <fa8de754-3d68-4f78-8bbf-57161d9feba4@googlegroups.com> <70e0dea0-15cd-450b-8120-1be447992282@googlegroups.com>
Message-ID <aec30c0d-8f5c-4524-9056-fa93aea22544n@googlegroups.com> (permalink)
Subject Re: Passare da un JPanel ad un altro...
From stefano Cambazzu <stefano.cambazzu@gmail.com>

Show all headers | View raw


Ciao a tutti , 
Ho creato un classe principale 

import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Clip;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;

import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;






public class fantasy1 extends JFrame {
public static  Clip audio;
   
    public static void main(String[] args) {
       
    
  
     colonnasonora("./sound/storia.wav");
        
       JFrame myFrame = new JFrame("Fantasy 1");

      
     //Se larghezza 768 --> 16 *48 (Muro) --> 768 - Altezza 576 --> 48 *12 

        myFrame.setSize(728, 455); // 768 * 576 -> risoluzione dell'immagine oelemento 
        myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        myFrame.setLocationRelativeTo(null);
       myFrame.setResizable(false);
// vorrei scrivere se premo la barra spaziatrice carichi l'immagine statica 1
      la seconda volta immagine 2 la terza  immagine 3
 La 4 volta entra  nel gioco e carico la classe dedicata GameFrame
GameFrame prende il controllo della tastiera programmata per il player
        myFrame.add(new cover()); // Copertina
        //myFrame.add(new GameFrame()); // Gioco

        myFrame.setIconImage(new ImageIcon("./img/ico.png").getImage());
        myFrame.setVisible(true); 
      



    }

    public static void colonnasonora ( String musica){
        
        
        try {
             audio = AudioSystem.getClip();
            
            audio.open(AudioSystem.getAudioInputStream(new File(musica)));
            audio.loop(Clip.LOOP_CONTINUOUSLY);
            audio.start();
        } catch (Exception e) {
            System.out.println(e);
        }
    } 

  
}


Ho la necessità il programma parte con il panello definito sulla classe cover
questa deve rimanere in ascolto dei tasti.
se non viene premuto nulla la cover carica slide immagini a ripetizione.
Alla pressione del tasto "Space"
Viene caricata un immagine statica 1
la seconda volta un immagine statica 2
alla terza un immagine statica 3
alla quarta volta il programma passa dal panello definito nella classe cover alla classe GameFrame.
Questa classe rimane in ascolto dei tasti a seconda del tasto premuto muove il player
ecco un seudo codice

usa cosa del genere
      myFrame.add(new cover()); // Copertina caricata all'avvio dell'applicazione
cont= 0;
if (e.event =='space' ) {
if ( cont ==0) {
loadimage1;
cont= cont+1;
} esle if ( cont ==1) {
loadimage2;
cont= cont+1;
}  esle if ( cont ==2) {
loadimage3;
cont= cont+1;
}  else
myFrame.add(new GameFrame()); //Modifico il panello e prendo controllo dei tasti
// attiva tasti gestione player
}

Come faccio a cambiare il panello in fase di avvio e gestire i tasti in modo che all'inizio vengono rilevati dalla classe cover è successivamente viene caricata la classe  GameFrame cambiando evento tasti dedicati al player?

Grazie mille

Back to it.comp.java | Previous | Next | Find similar


Thread

Re: Passare da un JPanel ad un altro... stefano Cambazzu <stefano.cambazzu@gmail.com> - 2023-03-23 10:57 -0700

csiph-web