Visualizzazione dei risultati da 1 a 3 su 3

Discussione: gestione KeyListener

  1. #1

    gestione KeyListener

    Ma..... io non ho capito perchè non mi funziona ecco il codice:

    codice:
    import javax.swing.JFrame;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.KeyEvent;
    import java.awt.Button;
    import java.awt.FlowLayout;
    import java.awt.Dimension;
    
    public class Main extends JFrame implements ActionListener, KeyListener{
    
    	private static final long serialVersionUID = 1L;
    	
    	Button inizia, seleziona, esci;
    	Gioco gio = new Gioco();
    	
    	public Main(){
    		
    		gio.setPreferredSize(new Dimension(500, 500));
    		gio.setVisible(false);
    		add(gio);
    		
    		add(inizia = button("Inizia"));
    		add(seleziona = button("Seleziona"));
    		add(esci = button("Esci"));
    		addKeyListener(this);
    		
    	}
    	
    	@Override
    	public void keyPressed(KeyEvent ke) {
    
    		System.out.println("hai cliccato un tasto");
    		
    	}
    
    	@Override
    	public void keyReleased(KeyEvent arg0) {
    		// TODO Auto-generated method stub
    		
    	}
    
    	@Override
    	public void keyTyped(KeyEvent arg0) {
    		// TODO Auto-generated method stub
    		
    	}
    	
    	@Override
    	public void actionPerformed(ActionEvent ae){
    		
    		String azione = ae.getActionCommand();
    		
    		if (azione.equals("Inizia"))
    			gio.setVisible(true);
    		else if(azione.equals("Esci"))
    			System.exit(WIDTH);
    			
    	}
    	
    	public static void main (String args[]){
    	
    		Main frame = new Main();
    		frame.setTitle("Prova");
    		frame.setSize(500, 500);
    		frame.setLayout(new FlowLayout());
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		frame.setVisible(true);
    		
    	}
    	
    	public Button button(String testo){
    		
    		Button b = new Button(testo);
    		b.addActionListener(this);
    		return b;
    	}
    	
    }
    in pratica quando clicco un tasto non accade nulla, e come se l'ascoltatore non ricevesse nulla, non so perchè mi ha sempre funzionato, Gioco gio è un JPanel comunque.... qualcuno sa come aiutarmi?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Non vorrei dire una boiata ma mi pare che il KeyListener funzioni solo se il componente ha il focus...

    Se vuoi qualcosa di più generale usa le ActionMap: http://docs.oracle.com/javase/tutori...eybinding.html
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3

    risposta

    si hai ragione tu, alcuni JComponent come letto dal tuo link funzionano solo con una focalizzazione.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.