Visualizzazione dei risultati da 1 a 9 su 9

Discussione: KeyEvent

  1. #1

    KeyEvent

    Ciao a tutti, non riesco a capire perchè mi dà errore in questo codice alla dichiarazione dell'EventHandler:
    codice:
    package esercizi.da.slide;
    
    import java.awt.event.KeyEvent;
    import javafx.application.Application;
    import javafx.event.ActionEvent;
    import javafx.event.EventHandler;
    import javafx.scene.Scene;
    import javafx.scene.control.Button;
    import javafx.scene.input.KeyCode;
    import javafx.scene.layout.TilePane;
    import javafx.stage.Stage;
    
    public class Keyboard1 extends Application {
        int counter=0;
        @Override
        public void start(Stage stage) {
            TilePane box=new TilePane();
            box.setHgap(50);
            final Button b1=new Button("Uno");
            final Button b2=new Button("Due");
            box.getChildren().addAll(b1,b2);
            
            
            EventHandler<KeyEvent> keyEventHandler =new EventHandler<KeyEvent>() {
                @Override
                public void handle(ActionEvent keyEvent) {
                    if (keyEvent.getCode() == KeyCode.U) {
                        b1.fireEvent(new ActionEvent());
                        System.out.println(keyEvent.getSource()
                        +" => "+keyEvent.getTarget());
                    }
                }
            };
            
            Scene scene = new Scene(box, 400, 300);
            b1.addEventHandler(KeyEvent.KEY_PRESSED, keyEventHandler);
            stage.setTitle("My JavaFX Application");
            stage.setScene(scene);
            stage.show();
            }
        
            public static void main(String[] args) {
            Application.launch(args);
            }
        }
    Ultima modifica di campaenrico; 06-05-2015 a 19:13

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    A rigor di logica, se la parametrizzazione è <KeyEvent> allora handle deve ricevere un KeyEvent.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Si giusto ma l'errore me lo da già nella dichiarazione sopra:
    error: type argument KeyEvent is not within bounds of type-variable T
    EventHandler<KeyEvent> keyEventHandler =new EventHandler<KeyEvent>() {
    where T is a type-variable:
    T extends Event declared in interface EventHandler

  4. #4
    Si anzi è vero scusa l'avevo cambiato per sbaglio perchè non sapevo più cosa provare a fare

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Alt! Il KeyEvent è di AWT .... no, non va bene!

    Sono da smartphone, non posso verificare più di tanto. Vedi cosa puoi usare ma di JavaFX, non AWT.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Ok, ora che sono da PC ho potuto verificare meglio. Ti serve javafx.scene.input.KeyEvent, non il KeyEvent di AWT.

    E c'è anche l'esempio ufficiale Oracle qui.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Grazie mille gentilissimo, ma una domanda, le librerie di solito se gli mancano mi da in automatico quali importare, come mai questa non me lo diceva?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da campaenrico Visualizza il messaggio
    le librerie di solito se gli mancano mi da in automatico quali importare, come mai questa non me lo diceva?
    Nel runtime Java ci sono ben 3 KeyEvent:
    com.sun.glass.events.KeyEvent
    java.awt.event.KeyEvent
    javafx.scene.input.KeyEvent

    Quindi l'IDE non può scegliere arbitrariamente in automatico ... al massimo te li elenca e ti fa scegliere.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    capito grazie mille

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.