|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Casteddu
Messaggi: 532
|
[Java] Jtable ed eventi
Buona sera ho un piccolo problema relativo agli eventi in java..
vorrei che facendo un doppio clik su una riga di uan jtable mi si aprisse una finestrella...non riesco a farlo qualcuno può aiutarmi grazie!!!
__________________
Uccidere un nemico significa vincere, vederlo implorare la morte quello è il trionfo! |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Casteddu
Messaggi: 532
|
uppete...
__________________
Uccidere un nemico significa vincere, vederlo implorare la morte quello è il trionfo! |
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
Quote:
purtroppo i due uomini swing sono in ferie
|
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Casteddu
Messaggi: 532
|
Quote:
__________________
Uccidere un nemico significa vincere, vederlo implorare la morte quello è il trionfo! |
|
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Quote:
Io farei cosi: JTable eredita da Component il metodo addMouseListener, quindi è in grado di produrre gli eventi del mouse e basta aggiungere un MouseListener alla JTable per ricevere gli eventi prodotti. In particolare l'evento prodotto dalla JTable è un MouseEvent. Una volta ottenuto l'evento bisogna verificare se: - si tratta di un doppio click; - se il doppio click è avventuo sulla riga che ti interessa. Per sapere se si tratta di un doppio click c'è il metodo getClickCount() di MouseEvent; Per sapere qual è la riga interessata dal click dapprima ricaviamo dal MouseEvent il punto in cui è avvenuto il click con getPoint(); quindi invochiamo sulla JTable il metodo rowAtPoint(Point point) che restituisce l'indice della riga in cui si trova il punto, o -1 se quel punto non si trova in nessuan riga. Controllando questo valore puoi decidere se far aprire o non un nuovo JFrame. Quindi il tuo listener potrebbe essere su per giù cosi: Codice:
class DoubleClickListener exteds MouseAdapter{
//Questo campo contiene l'indice della riga su cui si
//deve fare doppio click per aprire la finestra;
//puoi anche passarlo nel costruttore o gestirlo in altro modo
private int clickRow = 0;
//A noi interessa solo l'evento di click
public void mouseClicked(MouseEvent e){
//se non è doppio click ritorno
if(e.getClickCount() < 2)
return;
//Considero solo i click del pulsante sinistro;
//se vuoi gestire l'evento anche se si fa dopppio
//click col tasto destro commenta questo if
if(e.getButton() != MouseEvent.BUTTON1)
return;
//Ricavo la tabella che ha prodotto l'evento
JTable table = (JTable)e.getSource();
//Calcolo la riga su cui si è fatto click
int clickedRow = rowAtPoint(e.getPoint());
//Se non è la riga che mi interessa ritorno
if(clickedRow != clickRow)
return;
//Altrimenti costruisco la nuova finestra
//.....
//......
//.....
}
}
Quindi quando crei la tabella devi registrare il listener: JTable table = .....; table.addMouseListener(new DoubleClickListener()); Dovrebbe fungere, anche se non l'ho provato, ciao!
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals Ultima modifica di anx721 : 04-08-2004 alle 13:11. |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Casteddu
Messaggi: 532
|
grazie ora lo provo.....
ti farò sapere
__________________
Uccidere un nemico significa vincere, vederlo implorare la morte quello è il trionfo! |
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: Casteddu
Messaggi: 532
|
Quote:
ti ringrazio funziona perfettamnte nel tuo codice c' è un errorino d distrazione in questa riga int clickedRow = rowAtPoint(table.getPoint()); in realtà è così int clickedRow = table.rowAtPoint(e.getPoint()); ancora tante grazie!!!!!!
__________________
Uccidere un nemico significa vincere, vederlo implorare la morte quello è il trionfo! |
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
|
Si certo, in effetti non l'ho proprio provato
__________________
Sun Certified Java Programmer EUCIP Core Level Certified European Certification of Informatics Professionals |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 00:32.



















