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

    Inserire Scrollbar laterale nella tabella

    Come faccio ad inserire lo scrollbar laterale nella tabella del seguente codice?
    Grazie mille!




    final JTable table = new JTable(data, columnNames);
    JScrollPane scrollPane = new JScrollPane(table);
    table.setFillsViewportHeight(true);
    table.setEnabled(false);
    j=new JTableHeader();
    j=table.getTableHeader();
    add(j);
    j.setBounds(80, 80, 800, 30);
    add(scrollPane);
    scrollPane.setBounds(12, 110, 1000, 400);

    table.setEnabled(true);


    table.getSelectionModel().addListSelectionListener (

    new ListSelectionListener() {
    public void valueChanged(ListSelectionEvent event) {
    sel=table.getSelectedRow();







    int viewRow = table.getSelectedRow();
    if (viewRow < 0) {



    } else {
    int modelRow =
    table.convertRowIndexToModel(viewRow);

    }
    }
    }
    );

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

    Re: Inserire Scrollbar laterale nella tabella

    Originariamente inviato da lukeman83
    Come faccio ad inserire lo scrollbar laterale nella tabella del seguente codice?
    Innanzitutto se si mette già il JTable dentro un JScrollPane allora non ci sarebbe affatto bisogno di prendere il JTableHeader e metterlo esplicitamente altrove. Ci pensa il JScrollPane a gestire l'header.

    Poi comunque se usi JScrollPane le due scrollbar sono già gestite da JScrollPane. Non devi fare nulla di speciale. Se non specificare al massimo le "policy" di visualizzazione delle scrollbar.
    Per come hai fatto new JScrollPane(table) le scrollbar sono visualizzate solo quando servono realmente. Se vuoi che ci siano sempre, anche quando non servirebbero, allora cambia le policy di visualizzazione. Vedi gli altri costruttori di JScrollPane o i metodi setXXXXScrollBarPolicy.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie,
    e invece per settare la larghezza delle colonne della tabella quale metodo posso utilizzare?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da lukeman83
    e invece per settare la larghezza delle colonne della tabella quale metodo posso utilizzare?
    Innanzitutto JTable ha una proprietà autoResizeMode (vedi get/setAutoResizeMode).
    Se vuoi dare larghezze precise esplicite, devi disabilitare l'auto resize mettendolo a AUTO_RESIZE_OFF.

    Poi devi prendere il TableColumnModel, prendere il TableColumn i-esimo e su quest'ultimo tipo ci sono setPreferredWidth/setMinWidth/setMaxWidth.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    In pratica in questo momento la tabella si autoridimensiona in base al jpanel in cui l'ho inserita invece io vorrei che le colonne si ridimensionassero in base al loro contenuto e nel caso in cui la tabella sia piu' larga del panel in cui si trova si dovrebbe attivare lo scrollbar che attualmente non si attiva perche' la tabella si ridimensiona in base al panel.

    Puoi dirmi cosa fare adesso che sono stato piu' chiaro?


    Ho inserito lo scrollbar orizontale come mi hai detto:
    scrollPane.setHorizontalScrollBarPolicy(ScrollPane Constants.HORIZONTAL_SCROLLBAR_ALWAYS);

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da lukeman83
    vorrei che le colonne si ridimensionassero in base al loro contenuto
    Questa funzionalità non è disponibile, purtroppo, "di serie". Si può fare ma richiede un certo lavoro. Per una certa colonna dovresti scansionare tutte le celle, per ognuna dovresti invocare esplicitamente il renderer che ti restituisce il Component, di questo vai a prendere la dimensione "preferita" e su tutte le celle calcoli man mano il massimo di questa dimensione. Che alla fine è la dimensione "giusta" per mostrare i contenuti nella colonna.
    E se vogliamo fare i fini, in questo calcolo del massimo si può inserire anche la dimensione del header (anch'esso gestito tramite renderer).

    Originariamente inviato da lukeman83
    e nel caso in cui la tabella sia piu' larga del panel in cui si trova si dovrebbe attivare lo scrollbar che attualmente non si attiva perche' la tabella si ridimensiona in base al panel.
    Come ho detto prima, c'è la questione del auto-resize.

    Originariamente inviato da lukeman83
    scrollPane.setHorizontalScrollBarPolicy(ScrollPane Constants.HORIZONTAL_SCROLLBAR_ALWAYS);
    Ok. Ma questo appunto solo per mostrarla sempre. Se è attiva e quanto può scrollare dipende appunto solo dalla questione dimensione contenitore vs dimensione "view" parziale.
    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.