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

    Selezionare una cella di una tabella

    Ciao a tutti!!!
    Ho un problemino(tanto per cambiare)....
    Ho una tabella all'interno di uno scrollPane con 2 colonne ed n righe, gli ho settato le dimendioni alla tabella maggiori dello scrollPane(il perchè? è per l'effetto grafico richiesto da specifica ) avendo come risultato l'immagine allegata(img1). Ora il problema sta nella selezione della riga. Quando viene selezionata si sposta la barra orizzontale dello scrollPane nascondendo la prima colonna avendo come risultato l'allegato img2.
    Ora mi chiedo come posso fare per evitare che quando clicco sulla seconda colonna non venga nascosta la prima? O meglio come posso fare per rendere lo scoll manuale?
    Anticipatamente grazie!!!
    Immagini allegate Immagini allegate

  2. #2
    img2
    Immagini allegate Immagini allegate

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

    Re: Selezionare una cella di una tabella

    Originariamente inviato da carlitos081
    Ora il problema sta nella selezione della riga. Quando viene selezionata si sposta la barra orizzontale dello scrollPane nascondendo la prima colonna avendo come risultato l'allegato img2.
    Ora mi chiedo come posso fare per evitare che quando clicco sulla seconda colonna non venga nascosta la prima?
    La cosa più banale: prendi il JScrollBar orizzontale dal JScrollPane e gli setti il valore al minimo.
    Altre soluzioni: a) chiedere a JTable di scrollare ad un certo Rectangle (tipicamente di una cella) o b) chiedere al JViewport del JScrollPane di scrollare ad un certo Point. Queste due tecniche sono mostrate tra i miei Java Examples (vedi firma), in un esempio nella sezione Tables.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Grazie per le tue risposte andbin. Sei sempre rapido e concisio nelle tue soluzioni grazie d'avero. Ho risolto in questo modo:

    getTable().addMouseListener(new MouseListener() {

    @Override
    public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent e) {

    int selectedRow = getTable().getSelectedRow();
    getTable().changeSelection(selectedRow, 0, false, false);

    }

    @Override
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub

    }
    });
    }

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da carlitos081
    Ho risolto in questo modo:

    codice:
    getTable().addMouseListener(new MouseListener() {
    .....				
        int selectedRow =  getTable().getSelectedRow();
        getTable().changeSelection(selectedRow, 0, false, false);
    Ma così hai anche l'effetto che il "focus" passa sulla cella in prima colonna. Come dicevo io il focus resterebbe sulla cella dove hai cliccato. Poi questione di gusti/scelte/necessità ....

    Comunque con un MouseListener è brutto/dubbio, meglio un ListSelectionListener.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Scusa ma mi sono accorto che in questo modo se trascino con il mause non funziona e quindi ho inserito anche il suggerimento di andbin:

    getTable().addMouseListener(new MouseListener() {

    @Override
    public void mouseReleased(MouseEvent e) {
    getJScrollPane( ).getHorizontalScrollBar().setValue(0);
    }

    @Override
    public void mousePressed(MouseEvent e) {

    if(getTable().getSelectedColumn() != 0){
    int selectedRow = getTable().getSelectedRow();
    getTable().changeSelection(selectedRow, 0, false, false);
    }

    }

    @Override
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseEntered(MouseEvent e) {


    }

    @Override
    public void mouseClicked(MouseEvent e) {

    }
    });

  7. #7
    Per la colonna hai ragione ma a me non serve sapere quale colonna si sta selezionando e quindi non è un problema per me ma la tua osservazione è giustissima... Ma non mi permette di inserire un ListSelectionListener

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da carlitos081
    Ma non mi permette di inserire un ListSelectionListener
    La gestione dei ListSelectionListener è affidata al ListSelectionModel, vedi getSelectionModel() di JTable.
    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.