Avatar billede meltinis Nybegynder
04. juni 2003 - 14:42 Der er 4 kommentarer og
1 løsning

MouseListener i en ComboBox

Jeg har nogle problemer med at få MouseListener til at virke i en ComboBox. Min kode ser (let forkortet) sådan ud:


import javax.swing.*;
import java.awt.event.*;

public class Klassenavn extends JPanel implements MouseListener
{

  private JComboBox cb = new JComboBox();

public Klassenavn()
  {
    this.setLayout(new BorderLayout());
    this.add(cb);   
    cb.addMouseListener(this);
  }

public void mouseExited(MouseEvent e)
{
  System.out.println("Hello world");
}
public void mouseEntered(MouseEvent e)
{
  System.out.println("Hello world");
}
public void mouseReleased(MouseEvent e)
{
  System.out.println("Hello world");
}
public void mousePressed(MouseEvent e)
{
  System.out.println("Hello world");
}
public void mouseClicked(MouseEvent e)
{
  System.out.println("Hello world");
}
}

Men den skriver INTET når jeg kører den!!!
Jeg har prøvet at sætte den på panelet istedet og der virker det fint!

Hvad skal jeg gøre for at få det til at virke med ComboBoxen?
Avatar billede magoo20000 Nybegynder
04. juni 2003 - 14:54 #1
Du mangler, at se på hvor eventen kommer fra.
Avatar billede meltinis Nybegynder
04. juni 2003 - 14:57 #2
Burde den ikke skrive til skærmen ligegyldigt hvad, når jeg ikke har defineret hvilken source det kommer fra?
Avatar billede magoo20000 Nybegynder
04. juni 2003 - 18:03 #3
Jo, du har ret.. Jeg fik en hjerneblødning.. Se http://www.keithv.com/cs161/mouse_listener.html for et eksempel.
Avatar billede meltinis Nybegynder
04. juni 2003 - 19:35 #4
Linket virker ikke :(
Avatar billede meltinis Nybegynder
04. juni 2003 - 19:56 #5
Jeg har nu fundet ud af at man kan bruge en ItemListener i stedet!!!
Den fungere på samme måde som enhver anden Listener:

private JComboBox cb = new JComboBox();
...
...
cb.addItemListener(new KlasseItemListener());
...
...
class KlasseItemListener implements ItemListener
  {
    // Denne metode bliver kun kaldt hvis der er foretaget et nyt valg
    public void itemStateChanged(ItemEvent e)
    {
      if(e.getSource()==cb)
      {
        System.out.println("Hello World");
      }
    }
  }

Men du skal alligevel have tak for hjælpen... og pointene går til dig :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester