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

    Disabilitare tasto InVIO di default in JTable

    Scusate ragazzi per questo nuovo post.

    Ho bisogno di disabilitare il tasto tab ed il tasto invio che per default sono implementati nella JTable.

    Per disabilitare il tasto TAB ho utilizzato questo codice

    codice:
    jTable.setFocusTraversalKeysEnabled(false);
    purtroppo non riesco a disabilitare il tasto INVIO che contiua a funzionare.

    mi spiego meglio.

    Ho implementato un keyListener assoviato alla mia tabella. Quando l'utente con i tasti direzionali seleziona una riga di una jtable e preme INVIO viene eseguita una operazione, fin qui tutto ok,

    il mio problema è che poi viene selezionata la riga successiva cosa ce potrebbe indurre in errore l'utente.

    Mi potete dare un aiutino??

    Ho anche provato a fare questo

    premo tasto invio quindi viene eseguita operazione "popolaForm(row, column)" quindi jTable.selectCell(row,column)

    ma non funziona

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Senza riscrivere niente da zero:
    codice:
    public void keyReleased (KeyEvent ke) {
    [...]
                if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
                    int current_row = (table.getSelectedRow()-1 == -1 ? table.getRowCount() - 1 : table.getSelectedRow() -1);                
                    table.setRowSelectionInterval(current_row, current_row);
                }
    [...]
            }
    ma ti accorgerai provandolo che ha qualche limitazione (tipo, se uno tiene premuto <ENTER>)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Purtroppo a me serve proprio mentre premo il tasto ENTER, e cmq non va ancora bene perchè mi seleziona più righe

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    risolto:

    codice:
    public void keyPressed (KeyEvent ke) {
      /* Altra roba */
      if (ke.getKeyCode() == KeyEvent.VK_ENTER) {
       /* Quanto dev'essere fatto alla pressione di <ENTER> */
        ke.consume();
      }
    }
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    forse non mi sono spiegato bene.

    Il mio key listener è il seguente:

    codice:
    public void keypressed(KeyEvent e)
    {
       if(e.getKeyCode() == KeyEvent.VK_Enter)
       {
           salvaOperazione()//metodo
       }
    }
    e funziona l'operazione viene lanciata soltanto che la selezione si sposta dalla riga che avevo selezionato a quella di dopo. Causando quindi un pò di confusione all'utente.

    Ammettiamo che io ho una tabella con 3 righe popolate.

    Mi posiziono sulla seconda riga attraverso i tasti direzionali (quindi ho la seconda riga evidenziata di blu) e premo il tasto invio.

    L'operazione che interessa a me viene eseguita purtroppo viene selezionata successivamente la riga successiva quindi la 3.

    Cosa che non è corretta io vorrei che la selezione rimanesse ferma sulla secoda riga (in questo cas)

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    aho:

    e.consume()

    l'hai messo?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Grazie mille risolto

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    apposto
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

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