/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Mouse listener i celler i JTable
Fra : Anders Jørgensen


Dato : 20-11-01 09:03

Jeg har en JTable, som indeholder JLabel's i cellerne. Jeg bruger den
udelukkende til præsentation, altså ikke nogen editorer på cellerne, men
dog en speciel renderer, så jeg kan få vist labels med bagggrundsfarve.

Jeg vil gerne kunne fange museklik på cellerne, og derefter finde ud af
hvilken række/kolonne der er klikket på.

Jeg har kigget i Sun's tutorial, hvor der står hvordan man fanger
museklik på JTableHeader'en, men en celle i en tabel er så vidt jeg kan
se ikke en Component man kan addere en MouseListener på, så jeg kan ikke
overføre denne metode til cellerne.

Jeg har også prøvet at addere en MouseListener til hver enkelt JLabel i
tabellen, men den bliver heller ikke aktiveret. Jeg gjorde sådan (til en
start):

label.addMouseListener(new MouseAdapter() {
       public void mouseClicked(MouseEvent e) {
         System.out.println("Mouse Clicked");
      }});

... hvor label efterfølgende bliver puttet i tabellen med
   table.setValueAt(label, row,column)

Er jeg helt på vildspor?

venlig hilsen
Anders Jørgensen

      



 
 
Anders Jørgensen (20-11-2001)
Kommentar
Fra : Anders Jørgensen


Dato : 20-11-01 16:54

Jeg skrev selv:

> Jeg vil gerne kunne fange museklik på cellerne, og derefter finde ud af
> hvilken række/kolonne der er klikket på.


Jeg fandt en meget simpel løsning. I stedet for at lave listener'e på de
enkelte celler eller deres indeholdte komponenter, kan man bare lave en
listener på hele tabellen, og så "oversætte" fra MouseEvent'ens
klik-position til de tilsvarende celle-koordinater, med eksisterende
metoder:


table.addMouseListener(new MouseAdapter() {
    public void mouseClicked(MouseEvent e) {
      Point p = e.getPoint();
      int row = table.rowAtPoint(p);
      int col = table.columnAtPoint(p);
      System.out.println("Klik på celle: " + row + "," + col);
    }
   });
   
Nå, men håber så at der er andre der kan bruge det til noget en gang

mvh Anders


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408526
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste