---
title: "Får inte mouseevent att funka"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/94311-får-inte-mouseevent-att-funka"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "tovelainen"
published: "2004-01-09T09:28:06.000Z"
updated: "2004-01-09T15:25:23.000Z"
replies: 7
views: 251
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/94311-får-inte-mouseevent-att-funka"
---

# Får inte mouseevent att funka

## #1 — tovelainen, 2004-01-09T09:28Z

Håller på med ett litet spel. Prylen som nu inte funkar är när mouseClicked-metoden ska ta emot vilken av de 4 knapparna som finns är klickad.
Så ser det tex ut. (a är en av a,b,c,d - knappobjekten):
\--------
public void mouseClicked (MouseEvent e){

    if(e.getSource()==a){
      labelval.setText("FUSK!");
      }

Permalänk: https://www.webforum.nu/p/94311

## #2 — phonkworks, 2004-01-09T10:46Z

pröva så här:

public void mouseClicked (MouseEvent e){

Button tmp = (Button) e.getSource();

if(tmp.equals(a)){
labelval.setText("FUSK!");
}

}

mvh
phonk

Permalänk: https://www.webforum.nu/p/1246090

## #3 — Viktor, 2004-01-09T10:51Z

Är det inte bättre att använda ett actionEvent? Det är ett actionevent som skapas när du trycker på knappen (altså på din button, inte din mouse button :) ).

/Viktor

Permalänk: https://www.webforum.nu/p/1246094

## #4 — tovelainen, 2004-01-09T13:30Z

hej. tack för svaren!

Ja helt klart vore det kanske bättre med actionevent, så jag ändrade allt till det i stället.
Men saken är den att det fortfarande inte funkar. Det är ännu bara else-satsen som körs.
Har ännu inte provat phonks förslag.

Man ska inte använda instanceof? Provade det lite grann med det gav inget, men det kan bero på att jag inte är säker på användningsområdet.

Permalänk: https://www.webforum.nu/p/1246170

## #5 — Viktor, 2004-01-09T14:08Z

Som vanligt, lägg in lite mer kod så ska det nog gå att lösa. :) 
Framförallt koden för hur du skapar knappen och var du lägger in den i ditt fönster/applet.

Det ska fungera med e.getSoruce()==a, så länge det är a som ligger i fönstret dvs. instanceof ska du inte använda eftersom den bara kollar om ett objekt är av en viss typ, du skulle altså få true oberoende vilken knapp du har tryckt på om du skulle skriva

```
if(e.getSource() instanceof a)
{
}
```

eftersom knappen (e.getSource()) är en Button och a är en instans av en Button. Men när jag skriver detta så blir jag lite osäker på om man kan ta en instanceof mellan 2 instanser, men hur som helst så är det inte instanceof som du ska använda :)

/Viktor

Permalänk: https://www.webforum.nu/p/1246191

## #6 — tovelainen, 2004-01-09T14:38Z

Tack igen för svar!

Jag har skalat bort en del av koden...råkade även få med mig en del av label-koden vars fortsättning återkommmer en bit ner. Men label-grejset funkade som det skulle.
Klistrar in en bit av koden o blir tacksam om du kollar o ser om du hittar felet. Hoppas jag inte tog bort för mycket.
Här kommer den:
\-----------------------
import java.awt.\*;
import java.awt.event.\*;
import extra.\*;

public class Speltest {
  public static void main(String\[\] args) {
    Fenster tfenster = new Fenster();
  }
}

class Fenster
    extends ExtendedFrame
    implements ActionListener {
  private Label label1;
  private Label label2;

  private Button b;
  private Button a;

  public Fenster() {
    setLocation(200, 200);
    setSize(300, 350);
    setBackground(Color.gray);
    setResizable(false);

    //nedre delen:
    Panel p = new Panel(new GridLayout(2, 1, 10, 10));
    Panel p1 = new Panel(new FlowLayout(FlowLayout.CENTER, 10, 10));
    Button a = new Button("knapp a");
    Button b = new Button("knapp b");

    p1.add(a);
    p1.add(b);
    p.add(p1);

    add(p, BorderLayout.SOUTH);

    a.addActionListener(this);
    b.addActionListener(this);

    setVisible(true);

  }

  public void actionPerformed(ActionEvent e) {

    if (e.getSource() == a) {
      labelval.setText("ojoj");
   
    }
    if (e.getSource() == b) {
      labelval.setText("finemangs");

    }

    else
      labelval.setText("pust");

  }

}
\----------------------------
hej!

Permalänk: https://www.webforum.nu/p/1246201

## #7 — Viktor, 2004-01-09T14:51Z

Du deklarerar 2 Button a, ett globalt objekt och sedan när du skapar knappen så deklarerar du en ny lokal variabel som också heter a, det är den som hamnar i ditt fönster, men sedan när du kör din e.getSource()==a så kollar du om det var den globala knapp a som trycktes.
ändra koden

```
Button a = new Button("knapp a");
Button b = new Button("knapp b");
```

till

```
a = new Button("knapp a");
b = new Button("knapp b");
```

så ska det fungera :)

En annan ska, använd gärna kod taggarna på forumet när du postar kod, då blir det lättare att läsa. \[\_kod\] och \[/\_kod\], fast utan \_

/Viktor

Permalänk: https://www.webforum.nu/p/1246206

## #8 — tovelainen, 2004-01-09T15:25Z

wow!
Du fixade det!
Det löste biffen. Tusen tack. 
ha en trevlig fredagkväll!
  :birp 

hej hej!

Permalänk: https://www.webforum.nu/p/1246225

---

Tråden på webben: https://www.webforum.nu/amne/java/94311-får-inte-mouseevent-att-funka
