Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    140

    [JAVA] Intercettare ctrl+tab

    Ciao, ho l'esigenza di intercettare la combinazione di tasti ctrl+tab per fare aprire una finestra secondaria al mio programma. Ho pensato a questo: gestisco un flag che setto a true quando premo control ed eventualmente lo riporto a false quando lo rilascio. Se intercetto la pressione di TAB vado a verificare se il flag di CTRL è true, se è così attivo la procedura. Non mi pare sbagliato come ragionamento, l'unico problema è che se io tengo premuto CTRL quanto basta per premere TAB, nel frattempo vengono sollevati una marea di eventi keypressed, mentre a me farebbe comodo sollevarne uno solo per avere il tempo di controllare il flag. Posso dirgli in qualche maniera di sollevare un solo evento alla pressione del tasto?

    Oppure c'è un altro metodo per intercettare la combinazione di tasti? Io ho cercato ma non ho trovato nulla. Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Prova a dare una letta qui:

    http://java.sun.com/docs/books/tutor...neraltext.html

    Nel paragrafo: Associating Text Actions with Key Strokes
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    140
    Ok ho visto, ma non mi è chiaro come usarlo (sono un pò niubbo lo so )
    Non capisco come intercettare la pressione dei tasti... non c'entrano nulla gli eventi keyPressed? Devo inserirlo lì il keyStroke?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    140
    up

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Ok, dopo un po' di maneggiamenti (CTRL TAB intereferisce con i focus) e l'aiuto del forum della sun:

    codice:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    
    public class keysComb extends JFrame {
      
        
      JTextArea ta = new JTextArea("Premi CTRL+TAB");
      
      public keysComb() {
        super("Prova tasti multipli");
        this.getContentPane().add(ta);
        this.setSize(400, 400);
        this.setVisible(true);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        KeyStroke ctrlTab = KeyStroke.getKeyStroke("ctrl TAB" );
        Set set = new HashSet(ta.getFocusTraversalKeys( KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS) );
        set.remove(ctrlTab);
        ta.setFocusTraversalKeys(KeyboardFocusManager.FORWARD_TRAVERSAL_KEYS, set);
        
        Action writeAction = new AbstractAction() {
          public void actionPerformed(ActionEvent ae) {
            ta.append("\nHai premuto CTRL+TAB: bravo\n");
          }
        };
    
        ta.getInputMap().put(ctrlTab, writeAction);
      }
    
      public static void main (String[] args) {
        keysComb kc = new keysComb();
      }
    }
    Metti nella Action quel che ti serve.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2004
    Messaggi
    140
    Ti ringrazio molto!

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    18
    Mi trovo in difficoltà, devo in pratica visualizzare una popup quando premo la combinazione ctrl-tab... come posso fare?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Hai letto il mio post, quello con il codice? Dice:

    Metti nella Action quel che ti serve.
    Nell'action gli farai aprire la tua finestra. Alla luce di ciò, forse la tua domanda è: come faccio a mostrare un nuovo JFrame (o JDialog o che...)?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    18
    Esatto... mi incasino coi vari listener...

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.