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

    JTable con JscrollPane nascosto

    Salve ragazzi, avrei la necessità di realizzare una tabella senza ScrollBar Verticale, però la tabella cmq deve scrollare.

    Non si deve solo vedere.

    IO faccio così ma niente

    codice:
    tabellaProiezioniTotale = new JTable();
    jScrollPane3 = new JScrollPane();
    		jScrollPane3.getVerticalScrollBar().setPreferredSize (new Dimension(0,0)); 
    		jScrollPane3.setName("jScrollPane3");
    		jScrollPane3.setViewportView(tabellaProiezioniTotale);
    		jScrollPane3.setPreferredSize(dTabella2);
    		jScrollPane3.getViewport().add(tabellaProiezioniTotale);

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

    Re: JTable con JscrollPane nascosto

    Originariamente inviato da bircastri
    avrei la necessità di realizzare una tabella senza ScrollBar Verticale, però la tabella cmq deve scrollare.
    Cambia la "policy" di gestione delle scrollbar, vedi i costruttori di JScrollPane o i due metodi setVerticalScrollBarPolicy/setHorizontalScrollBarPolicy.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Allora ho fatto questo

    quando ho inizializzato lo jscrollpane ho fatto questo

    JScrollPane mioScrollPanel = new JScrollPane(JScrollPane.horizontal_SCROLLBAR_NEVER ,JScrollPane.VERTICAL_SCROLLBAR_NEVER);

    con questo riesco a fare in modo che la scrollbar laterale non si vede più ed ho in parte risolto il moi prolema.

    Quello che però non va bene è che la rotella del mouse non funziona.

    Cioè quello che io vorrei è questo, avere una tabella che non deve mostrare la scrollbar laterale ma comunque se vado con il mouse sopra devo poter scrollare.

    Adesso come adesso, posso scorrere la tabella in basso solo con i tasti freccia.

    C'è qualche altra opzione che posso attivare?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da bircastri
    Quello che però non va bene è che la rotella del mouse non funziona.

    Cioè quello che io vorrei è questo, avere una tabella che non deve mostrare la scrollbar laterale ma comunque se vado con il mouse sopra devo poter scrollare.

    C'è qualche altra opzione che posso attivare?
    Per verificare questo inghippo ho dovuto "scavare" nei meandri di Swing. In particolare sono andato a vedere il sorgente della classe:

    javax.swing.plaf.basic.BasicScrollPaneUI

    che rappresenta la base per i look&feel di un JScrollPane. Al suo interno viene registrato comunque sempre e in ogni caso un MouseWheelListener. Purtroppo nel mouseWheelMoved() vengono fatti dei test per cui se entrambe le scrollbar sono "non visibili" (isVisible() dà false come nel caso appunto della policy XXX_NEVER) allora lo scrolling non avviene perché fa uscire subito dal mouseWheelMoved. In pratica l'evento c'è, avviene, ma viene "zittito" da quel test. Il problema è molto "a valle" (e molto dentro Swing) e quindi non si può sovvertire facilmente questa cosa.

    Però ho trovato un escamotage simpatico: metti pure VERTICAL_SCROLLBAR_ALWAYS e poi fai:

    scrollPane.getVerticalScrollBar().setPreferredSize (new Dimension(0,0));

    La scrollbar sarebbe quindi visibile ma non la si vede perché non ha dimensione. E il wheel-scrolling funziona di nuovo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    mmmm

    idea molto astuta faccio delle prove e vi faccio sapere

    intanto mille grazie per il tuo interessamento.

  6. #6
    Grandioso, funaziona alla perfezione...

    Un unica accortezza, ho tolto dall'inizializzazione dello jscrollpane la variabili horizonta_.....

    quindi una semplice dichiarazione jscrollpanel = new JScrollPane();

    grazie problema risolto la tabella ora scrolla alla perfezione

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.