Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [JAVA] - ascoltatore tastiera

    codice:
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.text.*;
    import java.awt.event.*;
    import java.text.*;
    
    public class TastListener implements KeyListener {
    
    	private static JTextField lcd;
    
    	private static String etichetta;
    
    
    	public TastListener(JTextField cdt, String e)
    	{
    		etichetta = e;
    		lcd = cdt;
    	}
    
    	public void keyTyped(java.awt.event.KeyEvent e) {
    		lcd.setText(e.getKeyText(e.getKeyCode()));
    	}
    }
    ho scritto questo codice che dovrebbe ascoltare gli eventi della tastiera per la visualizzazione dei numeri sullo schermo (lcd) di una calcolatrice.
    però in compilazione ottengo questo errore:

    TastListener.java:7: TastListener is not abstract and does not override abstract method keyReleased(java.awt.event.KeyEvent) in java.awt.event.KeyListener
    public class TastListener implements KeyListener {
    ^
    1 error

  2. #2
    Quando implementi un'interfaccia sei costretto a definire tutti i metodi che in essa sono definiti in modo astratto.

    Il compilatore ti sta indicando che manca il metodo
    codice:
    keyReleased(java.awt.event.KeyEvent)
    Prova ad aggiungere alla tua classe il seguente codice:
    codice:
    public void keyReleased(java.awt.event.KeyEvent e){}
    public void keyPressed(java.awt.event.KeyEvent e){}
    Così definisci tutta l'interfaccia e non dovrebbe dare errore

  3. #3
    si si avevo già risolto leggendo bene l'errore e non solamente incavolandomi per esso

    ora però ho un altro problemino:

    codice:
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.text.*;
    import java.awt.event.*;
    import java.text.*;
    
    public class TastListener implements KeyListener {
    
    	private static JTextField lcd;
    
    	private String numero;
    
    
    	public TastListener(JTextField cdt) {
    		lcd = cdt;
    	}
    
    	public void keyTyped(java.awt.event.KeyEvent e) {
    	}
    
    	public void keyReleased(java.awt.event.KeyEvent e) {
    		numero = "" + e.getKeyText(e.getKeyCode());
    		if(lcd.getText().equals(""))
    			lcd.setText(numero);
    		else
    			lcd.setText(lcd.getText() + numero);
    	}
    
    	public void keyPressed(java.awt.event.KeyEvent e) {
    	}
    }
    questo è il codice dell'ascoltatore della tastiera, però quando avvio il programma l'ascoltatore funziona solamente all'inizio, appena premo uno dei pulsanti con il mouse, gli input da tastiera non funzionano più

    l'ascoltatore l'ho chiamato all'interno di una classe che si chiama "struttura" che estende JPanel in questo modo:

    codice:
    addKeyListener(new TastListener(lcd));
    ho passato lcd che sarebbe lo schermo su cui vado a scrivere

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Probabilmente il JPanel sul quale hai attivato il listener perde il focus (lo stato attivo) quando clicchi con il mouse: evidentemente clicchi con il mouse su un altro pannello o da qualche altra parte.

    In questo modo non è più il pannello designato come ascoltatore ad avere lo stato attivo e quindi lui non riceve più alcuna informazione.

    Per risolvere il problema dovresti associare lo stesso ascoltatore a ciascun componente della finestra (JFrame compreso), oppure fare in modo che quando clicchi con il mouse su un componente qualsiasi lo stato attivo ritorni al pannello su cui hai registrato l'ascoltatore.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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 © 2024 vBulletin Solutions, Inc. All rights reserved.