[Risolto] Rendere visibile una riga di una JList

di il
6 risposte

[Risolto] Rendere visibile una riga di una JList

Amici cari,
mi trovo ancora di fronte ad una banalità che non riesco a risolvere.
Ho una JList (ma la cosa vale anche per la JTable) caricata con un elenco di nomi, diciamo 100, e ovviamente ne visualizza solo una parte, in funziona dell'ampiezza della jFrame che la ospita (per es: 10).
Ora la finestra ha una funzione di ricerca con cui cerco un particolare nome.
Parte la ricerca, scandisco la JList per individuare il nome e se risulta uno di quei 10 già visibili, non c'è problema perché con il setSelectedIndex mi posiziono sulla riga corrispondente...
...
ma se il nome trovato non è tra quelli visibili, la riga corrispondente rimane nascosta ...

La domanda quindi è:
come si fa da codice, a far scrollare la JList in su o in giù fino a rendere visibile la riga selezionata? Perché la setSelectedIndex non me la sposta.
In VB6 era semplicissimo (Lista.ListItems(IndiceRiga).EnsureVisible).

Se non sono stato chiaro, per favore ditemelo.

6 Risposte

  • Re: [Risolto] Rendere visibile una riga di una JList

    ZioCrick ha scritto:


    come si fa da codice, a far scrollare la JList in su o in giù fino a rendere visibile la riga selezionata? Perché la setSelectedIndex non me la sposta.
    In VB6 era semplicissimo (Lista.ListItems(IndiceRiga).EnsureVisible).
    Riferito a JList (ma è molto similare per JTable), una possibilità è prendere i bound (il rettangolo) della cella alla tal riga e poi dire al JViewport (che è implicitamente contenuto nel JScrollPane) di spostare la vista a quella posizione. C'è un mio vecchio (vecchissimo!) esempio qui.
  • Re: [Risolto] Rendere visibile una riga di una JList

    Questo l'avevi già visto?

    https://stackoverflow.com/questions/1543705/java-jlist-scroll-to-selected-item
  • Re: [Risolto] Rendere visibile una riga di una JList

    Carissimi Andrea e golosauro ... lo sapevo che doveva essere una stupidata, e per l'ennesima volta mi sento rimbambito.
    Sono settimane che ci sto girando intorno ... cercando un qualche "SetVatelapescaCosa"

    Però ho visto che il metodo ensureIndexIsVisible c'è per la JList ma non per la JTable ...
    Nella marea di metodi che ha la JTable mi ci perdo ...
    Esiste un sistema altrettanto semplice per la JTable?
  • Re: [Risolto] Rendere visibile una riga di una JList

    Scusate ho trovato la soluzione:
    qui:
    https://stackoverflow.com/questions/853020/jtable-scrolling-to-a-specified-row-index


    Grazie di cuore per le indicazioni.
  • Re: [Risolto] Rendere visibile una riga di una JList

    È vero, non mi sono ricordato subito: JList ha anche il metodo ensureIndexIsVisible.
    Ma mi pare che ci sia una differenza tra questo e quanto ho detto prima. Ma quale non ricordo di preciso .... ri-verifichero ...
  • Re: [Risolto] Rendere visibile una riga di una JList

    andbin ha scritto:


    È vero, non mi sono ricordato subito: JList ha anche il metodo ensureIndexIsVisible.
    Ma mi pare che ci sia una differenza tra questo e quanto ho detto prima. Ma quale non ricordo di preciso .... ri-verifichero ...
    Andrea, non c'è problema. Sei sempre preciso e scrupoloso.
    Anche nell'esempio che hai linkato tu, usavi il metodo ensureIndexIsVisible, solo che siccome il tuo esempio riporta l'intera costruzione della form, mentre stavo guardandolo è arrivata l'indicazione di golosauro che riportava direttamente l'uso di ensureIndexIsVisible.

    Tra l'altro voglio precisare che la soluzione per la JTable non è la prima (lunga) riportata nel link che ho citato, ma quella proposta da Elmue, due righe sotto, che è costituita da una singola riga:
    table.scrollRectToVisible(table.getCellRect(row,column, true));
    Alla vostra:
Devi accedere o registrarti per scrivere nel forum
6 risposte