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

    [jtable]aggiungere listener a una cella

    Ciao,
    sto cercandi di capire come funzionano le tabelle in java.
    Ho una JTable di 2 colonne e qualche riga.
    Come posso fare per aggiungere un listener ad una singola cella? Quello che vorrei fare è far apparire un dialogbox quando si clicca su una cella. e' possibile?

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

    Re: [jtable]aggiungere listener a una cella

    Originariamente inviato da pavimento
    sto cercandi di capire come funzionano le tabelle in java.
    Ho una JTable di 2 colonne e qualche riga.
    Come posso fare per aggiungere un listener ad una singola cella? Quello che vorrei fare è far apparire un dialogbox quando si clicca su una cella. e' possibile?
    No, non sono le "celle" sui cui si possono registrare i listener. Non è così che funziona la tabella. I listener li registri in modo globale su JTable.

    Vuoi ricevere notifica di un click su una cella?
    a) Registri un MouseListener su JTable
    b) Nel mouseClicked() usi il MouseEvent per ottenere il Point del click
    c) Avendo il Point del click usi 2 metodi di JTable per sapere indice di riga/colonna della cella:

    int columnAtPoint(Point point)
    int rowAtPoint(Point point)

    E ci sarebbe da dire, per essere precisi, che questi indici ottenuti sono quelli nella "view", cioè quello che "vedi" ... non necessariamente sono gli indici di riga/colonna nel "model". Questo perché con JTable si possono "trascinare" e spostare le colonne e da Java 6 si può impostare un RowSorter. Quindi in questi casi gli indici nella view possono non corrispondere a quelli nel model.
    Vuoi quelli nel model? Trasli gli indici dalla view al model con altri metodi di JTable:

    int convertColumnIndexToModel(int viewColumnIndex)
    int convertRowIndexToModel(int viewRowIndex) (nota: da Java 6)
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Grazie.
    C'è una cosa che però mi sfugge. Facendo come hai suggerito funziona se clicco con il mouse (che è quello che ho chiesto), ma se selezionassi una cella utilizzando le frecce della tastiera?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da pavimento
    ma se selezionassi una cella utilizzando le frecce della tastiera?
    Questo è un altro discorso. E centra la gestione della "selezione" (le righe/colonne "evidenziate"). Vedi i metodi in JTable per gestire la selezione.
    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.