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

    Gestire focus nelle tabelle...

    Salve raga

    come da titolo, dovrei gestire il focus nelle tabelle in modo che alla pressione del tasto invio il cursore venga spostato nella cella adiacente in orizzontale e non in verticale com'è di default...

    Inoltre selezionata una cella il contenuto dovrebbe essere già evidenziato in modo che digitando una nuova lettera venga cancellato il contenuto precedente...

    Suggerimenti?

    Thanks

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

    Re: Gestire focus nelle tabelle...

    Originariamente inviato da Fire Fox II
    come da titolo, dovrei gestire il focus nelle tabelle in modo che alla pressione del tasto invio il cursore venga spostato nella cella adiacente in orizzontale e non in verticale com'è di default...
    Nota che non ci sarebbe solo <invio> da trattare ma anche <shift+invio> che fa lo spostamento opposto.

    codice:
    InputMap im = tabella.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
    im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "selectNextColumnCell");
    im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, InputEvent.SHIFT_DOWN_MASK), "selectPreviousColumnCell");
    Per chi vuole capire questo codice, bisogna andare ad ispezionare (con del proprio codice) il contenuto delle InputMap e della ActionMap e magari andare a "sbirciare" nei sorgenti del framework in javax.swing.plaf.basic.BasicTableUI.

    Originariamente inviato da Fire Fox II
    Inoltre selezionata una cella il contenuto dovrebbe essere già evidenziato in modo che digitando una nuova lettera venga cancellato il contenuto precedente...
    Qui bisogna precisare: vuoi che il contenuto (testo o quello che è) sia "selezionato" (evidenziato con il colore tipico della selezione) quando si entra nella fase di "edit" della cella o solo quando la cella riceve il focus (es. appunto con ENTER/shift+ENTER)?
    Sono due aspetti differenti.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Quando la cella riceve il focus (per rispondere al secondo quesito)

    Nel frattempo metto in pratica il primo

    Thanks

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Fire Fox II
    Quando la cella riceve il focus (per rispondere al secondo quesito)
    Il punto è che quando una cella riceve il focus (spostandosi da una cella all'altra come già descritto prima), è in gioco solo il TableCellRenderer che fornisce il Component da usare per "stampare" (a mo' di stampino) l'aspetto/contenuto del Component nella cella.
    E per banali celle di testo o valori numerici, il renderer di norma fornisce un JLabel che come si ben sa non ha "stato" particolare e nemmeno il concetto di "selezione".

    Anche se si riesce (e le possibilità ci sarebbero) a renderizzare il contenuto della cella come se fosse "selezionato", quando poi la cella entra davvero nella fase di edit, allora entra in gioco il TableCellEditor che fornisce il Component da mettere temporaneamente nella cella per editare il contenuto. E per testo o valori numerici, il editor di norma fornisce un JTextField. E anche in questo caso si dovrebbe fare qualcosa di specifico per fare in modo che il testo sia inizialmente selezionato nel text field.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.