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

    Non riesco ad implementare KeyListener

    Ciao a tutti... rieccomi per l'ennesimo problema con java :asd: Semplicemente, non riesco ad implementare KeyListener... questo il sorgente:
    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Erasechar extends JFrame implements ActionListener,KeyListener
    {
    	private JTextField rigaIns;
    	private JTextField rigaEle;
    	private JTextField rigaFin;
    	private String stringa;
    	private int el;
    	public Erasechar()
    	{
    		super("Elimina carattere");
    		setSize(200,115);
    		setLocationRelativeTo(null);
    		setResizable(false);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setLayout(new FlowLayout());
    		
    		MouseHandler handler = new MouseHandler();
    		
    		rigaIns = new JTextField("Inserisci stringa",15);
    		rigaIns.addMouseListener(handler);
    		rigaIns.addKeyListener(this);
    		add(rigaIns);
    		
    		rigaEle = new JTextField("Inserisci elemento da eliminare",15);
    		rigaEle.addActionListener(this);
    		rigaEle.addMouseListener(handler);
    		add(rigaEle);
    		
    		rigaFin = new JTextField(15);
    		rigaFin.setEditable(false);
    		rigaFin.setDisabledTextColor(Color.BLACK);
    		add(rigaFin);
    		
    		setVisible(true);
    	}
    	public void keyPressed(KeyEvent event)
    	{
    		stringa = rigaIns.getText();
    		if (event.getSource() == rigaIns)
    		{
    			if (stringa.equals(""))
    			{
    				rigaIns.setText("");
    			}
    		}
    	}
    	public void actionPerformed(ActionEvent event)
    	{
    		if (event.getSource() == rigaEle)
    		{
    			el = Integer.valueOf(rigaEle.getText()).intValue();
    			stringa = rigaIns.getText();
    			stringa = stringa.substring(0,el-1) + stringa.substring(el+1,stringa.length());
    
    			rigaFin.setText(stringa);
    		}
    	}
    	private class MouseHandler extends MouseAdapter
    	{
    		public void mousePressed(MouseEvent event)
    		{
    			if (event.getSource() == rigaIns)
    			{
    				rigaIns.setText("");
    			}
    			else if (event.getSource() == rigaEle)
    			{
    				rigaEle.setText("");
    			}
    		}
    	}
    	public static void main(String[] args)
    	{
    		new Erasechar();
    	}
    }
    Mi da il seguente errore quando tento di compilare: "Erasechar is not abstract and does not override abstract method keyReleased(java.awt.event.KeyEvent) in java.awt.event.KeyListener"

    Dandomi errore alla riga 4 che ho evidenziato in grassetto... qualcuno mi aiuta?? ^^

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Non riesco ad implementare KeyListener

    Originariamente inviato da Dreamer89
    Mi da il seguente errore quando tento di compilare: "Erasechar is not abstract and does not override abstract method keyReleased(java.awt.event.KeyEvent) in java.awt.event.KeyListener"
    KeyListener è una interfaccia che dichiara 3 metodi. Quindi in una classe concreta come Erasechar deve essere tassativamente fornita una implementazione per tutti i 3 metodi!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Non riesco ad implementare KeyListener

    Originariamente inviato da andbin
    KeyListener è una interfaccia che dichiara 3 metodi. Quindi in una classe concreta come Erasechar deve essere tassativamente fornita una implementazione per tutti i 3 metodi!!
    Ma prima ho provato a specificare tutti e 3 i metodi, ma mi dava comunque errore... forse perchè devo obbligatoriamente mettere almeno un'istruzione? Mi sembra strano però o_O Non esiste un'interfaccia che può farmi dichiarare solo un metodo che mi interessa?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Non riesco ad implementare KeyListener

    Originariamente inviato da Dreamer89
    Ma prima ho provato a specificare tutti e 3 i metodi, ma mi dava comunque errore... forse perchè devo obbligatoriamente mettere almeno un'istruzione?
    No affatto. Non è importante, ai fini della compilazione, come implementi il metodo!! Devi solo fare un override corretto dei metodi, cioè rispettare la signature dei metodi e marcarli public.

    Originariamente inviato da Dreamer89
    Mi sembra strano però o_O Non esiste un'interfaccia che può farmi dichiarare solo un metodo che mi interessa?
    Le interfacce dei principali listener sono quelle che vedi nel package java.awt.event. E quelle sono .... non è che le puoi cambiare.
    Semmai nota che per ogni XXXListener c'è una classe XXXAdapter che semplicemente contiene una implementazione vuota di tutti i metodi. Ma visto che già estendi JFrame, non puoi estendere altro.
    Puoi anche usare le inner class come viene fatto nel tuo codice per la classe MouseHandler.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

    Re: Re: Re: Re: Non riesco ad implementare KeyListener

    Originariamente inviato da andbin
    No affatto. Non è importante, ai fini della compilazione, come implementi il metodo!! Devi solo fare un override corretto dei metodi, cioè rispettare la signature dei metodi e marcarli public.

    Le interfacce dei principali listener sono quelle che vedi nel package java.awt.event. E quelle sono .... non è che le puoi cambiare.
    Semmai nota che per ogni XXXListener c'è una classe XXXAdapter che semplicemente contiene una implementazione vuota di tutti i metodi. Ma visto che già estendi JFrame, non puoi estendere altro.
    Puoi anche usare le inner class come viene fatto nel tuo codice per la classe MouseHandler.
    Ok grazie mille, tutto risolto

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.