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

    Formattazione Stringa cella JTable

    Ciao a tutti,
    ho un piccolo problema e vorrei dei consigli su come risolvere.
    Su una cella di una JTable ho una stringa e voglio che al passaggio del mouse questa venga formattata in grassetto e sottolineata.
    Tutto ciò riesco a farlo senza problema con il codice sottoriportato:
    codice:
    table.addMouseMotionListener(new MouseMotionAdapter(){
        public void mouseMoved(MouseEvent e){
           java.awt.Point p = e.getPoint();
           int column = table.columnAtPoint(p);
           int row = table.rowAtPoint(p);
           //Mio oggetto dove ho memorizzato le informazioni dei vari Team ma al momento non serve
           //TeamI tm=(TeamI)lst.get(row);
           //int idTeam=tm.getNome();
           String valueNameTeam="";
           if(column==2){
               table.setCursor(new Cursor(Cursor.HAND_CURSOR));
               valueNameTeam=table.getValueAt(row, column).toString();
               String value=valueNameTeam;
               String init="<html><u><b>";
               String end="</b></u></html>";
               value=init+value+end;
               table.setValueAt(value, row, column);
           }
           else {
              //**** Parte mancante
              //*****
              //**** Fine
              table.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
           }
        }
    });
    Il vero problema è che quando sposto il mouse un'altra cella voglio che la precedente Stringa ritorni alla formattazione precedente, insomma si dovrebbe comportare un pò come un link.

    L'unica idea che al momento ho è quella di memorizzare, in qualche modo, la riga precedente e sovrascriverla tramite il dato menorizzato nell'oggetto TeamI che ho nel sistema.
    Adesso mi sta venendo un'atra idea: e se usassi MouseEntered e MouseExited?
    Intanto provo quest'ultima idea...
    Ps neanche quest'ultima...se passo alla cella adiancente (quella da formattare) da sempre problemi

    Grazie per ogni consiglio/idea.

    Ciao.
    Ultima modifica di schumy2000; 19-11-2013 a 11:16
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da schumy2000 Visualizza il messaggio
    Il vero problema è che quando sposto il mouse un'altra cella voglio che la precedente Stringa ritorni alla formattazione precedente, insomma si dovrebbe comportare un pò come un link.
    Il MouseListener è "globale" della tabella, non di una singola cella. Quindi dovresti tenere memorizzato la locazione della cella che è stata l'ultima, così quando hai un mouseMoved per un'altra cella puoi dire "ah, la cella è cambiata" e avendo la locazione della precedente, puoi fare questa logica che hai detto.

    Quote Originariamente inviata da schumy2000 Visualizza il messaggio
    Adesso mi sta venendo un'atra idea: e se usassi MouseEntered e MouseExited?
    mouseEntered penso non sia utile. mouseExited sì, l'utente potrebbe muovere velocemente il mouse passando da una cella a "fuori" dalla tabella. In quel caso la logica all'ultima cella la devi applicare per togliere la formattazione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Perfetto!!!
    ho risolto confrontando la riga e la colonna precedente e nel caso affermativo mi riporta la stringa allo stato precedente.
    Applico anche mouseExited per togliere la formattazione quando col puntatore esco dalla tabella.
    La cosa che al momento non cambia e non capisco il perché è il Cursore.
    Come si vede dal codice precendente il cursore dovrebbe cambiare e assumere la forma di manina quando sono sulla colonna, invece al momento non vedo nessun cambiamento...
    c'è qualcosa che ho dimenticato?

    So che dovrei aprire un'altra discussione...sorry.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  4. #4
    Edit...
    ho sistemato.
    Il problema del Cursors era dato dal fatto che non dovevo applicarlo a:
    codice:
    table.setCursor(new Cursor(Cursor.HAND_CURSOR));
    bensi dovevo scrivere semplicemente:
    codice:
    setCursor(new Cursor(Cursor.HAND_CURSOR));
    riferito al oggetto che contiente la JTable (nel qual caso la mia classe extende JInterlnalFrame visto che sto lavorando con JDesktopPane).

    Grazie ugualmente.
    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

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.