Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Uscita con tasto esc

  1. #1

    Uscita con tasto esc

    Salve a tutti,

    sto creando un programma con la struttura switch-case-default e vorrei fare in modo che alla pressione del tasto "esc", si chiuda il programma. Grazie in anticipo

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giovanni255 Visualizza il messaggio
    sto creando un programma con la struttura switch-case-default e vorrei fare in modo che alla pressione del tasto "esc", si chiuda il programma. Grazie in anticipo
    Tipologia di applicazione? Console? Grafica? AWT o Swing?
    Non è indifferente ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    è una semplice GUI (classe swing).

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giovanni255 Visualizza il messaggio
    è una semplice GUI (classe swing).
    Se hai un JFrame e vuoi realizzare la chiusura tramite tasto Escape, la cosa più completa e generale che si può fare è applicare un key-binding al JRootPane del frame.
    Abbozzato:

    codice:
    public class MyFrame extends JFrame {
        //....
    
        public MyFrame() {
            //.......
    
            JRootPane rootPane = getRootPane();
            KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
            rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(stroke, "escape-per-chiudere");
            rootPane.getActionMap().put("escape-per-chiudere", new AbstractAction() {
                public void actionPerformed(ActionEvent actionEvent) {
                    dispose();
                }
            });
        }
    
        //.......

    La stringa "escape-per-chiudere" è arbitraria, purché sia abbastanza significativa/distintiva. Serve solo per fare da "ponte" tra il KeyStroke e la Action.
    La gestione del Escape è generale per tutto il frame, indipendentemente da quale componente ha il focus .... a meno che un componente specifico non gestisca e consumi l'Escape per conto suo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Ciao e grazie della risposta. Questo frammento di codice lo devo aggiungere al programma principale nel Main?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giovanni255 Visualizza il messaggio
    Questo frammento di codice lo devo aggiungere al programma principale nel Main?
    Il pezzetto che ho postato mi pare(va) chiaro: è nel contesto di una classe che estende JFrame. Il punto principale è getRootPane(), che è di JFrame/JDialog. Poi dove lo metti .. se nel costruttore, o in un metodo, ecc... potrebbe essere indifferente.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Ok grazie

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.