Avatar billede morten2001 Nybegynder
25. august 2001 - 12:48 Der er 9 kommentarer og
2 løsninger

Mouse event!?

Hvordan laver jeg så nå man trykker i sit applet så laver den en label med musens X og Y  akser???
har prøvet men jeg er sq for nubi

import java.applet.*;
import java.awt.*;

public class test extends Applet {

private int last_x=0,last_y=0;

public boolean MouseEvent(Event e, int x,int y) {
    last_x = x; last_y = y;
    Label statment = new Label(\"X: \" + x + \"Y: \" + y);
    statment.setBackground(Color.white);
    add(statment);
    return true;
}
}


Avatar billede lbhansen Nybegynder
25. august 2001 - 13:05 #1
hvis man skal fortsætte på med at bruge din fremgangsmåde(den er deprecated), så kan man gøre følgende:

import java.awt.*;

public class MouseMovedApplet extends java.applet.Applet {
    private Label statement;

    public void init(){
        statement = new Label(\"\");
        add(statement);
        }
    public boolean mouseMove(Event evt, int x, int y) {
        statement.setText(\"x=\"+x+\",y=\"+y);
    return false;
    }
}

Hvis det skal gøres rigtigt, skal du anvende en MouseMotionListener
Avatar billede nico26 Nybegynder
25. august 2001 - 16:18 #2
det nemmeste er at lave en klasser der arver fra MouseMotionAdapter

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class Test extends Applet {

  Label status;

  public void init() {
   
    setSize(200, 200);
    status = new Label(\"MouseCoords\");
    add(\"Center\", status);

    addMouseMotionListener(new MouseHandler());
  }

  class MouseHandler extends MouseMotionAdapter {
    public void mouseMoved(MouseEvent e) {
      status.setText(\"X: \" + e.getX() + \", Y: \" + e.getY());
    }
  }
}
Avatar billede lbhansen Nybegynder
25. august 2001 - 16:23 #3
til gengæld kan man så sige, at det første eksempel morten selv startede på, også virker i netscape 4.03.

Ikke så relevant, men der er da folk der specifikt spørger om understøttelse af netop denne version
Avatar billede nico26 Nybegynder
25. august 2001 - 17:03 #4
Men man er vel ikke sikker på at den gamle metode understøttes af nye browsere?
Avatar billede lbhansen Nybegynder
25. august 2001 - 17:27 #5
nej, det er man ikke. Det er ikke defineret nogle steder om hvorvidt deprecatede metoder eller klasser bliver fortsat med at blive implementeret.

Heldigvis på dette område, er det implementeret i 1.0 -> 1.3, jeg har dog ikke kigget på 1.4 endnu.
Avatar billede nico26 Nybegynder
25. august 2001 - 18:16 #6
ved du om der sker noget ved at implementere begge metoder
Avatar billede lbhansen Nybegynder
25. august 2001 - 18:33 #7
Har ikke lige kigget på, men kan ikke anbefale det, da det sikkert er forskellig alt efter hvilken JVM der bliver anvendt
Avatar billede morten2001 Nybegynder
26. august 2001 - 10:04 #8
jeg giver jeg begge svar ... da ibhansen gav det jeg spurgte om ... og nico22 gav det som jeg bruger nu.. takker mange gange for hjælpen begge to
Avatar billede morten2001 Nybegynder
26. august 2001 - 10:17 #9
det slog mig lige hvorfor kan jeg ikke bruge nogen af de andre mousefunktioner som mouseClicked

istedet for mouseMoved
Avatar billede morten2001 Nybegynder
26. august 2001 - 13:04 #10
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class test extends Applet {

  Label status;

  public void init() {
   
    setSize(200, 200);
    status = new Label(\"MouseCoords\");
    add(\"Center\", status);

    addMouseListener(new MouseAdapter());
  }

  class MouseHandler extends MouseAdapter {
    public void mousePressed(MouseEvent e) {
      status.setText(\"X: \" + e.getX() + \", Y: \" + e.getY());
    }
  }
}


virker ikke...???
Avatar billede lbhansen Nybegynder
26. august 2001 - 13:34 #11
Dels er det ikke en MouseAdapter der skal håndtere dine tryk, det er din egen implementering MouseHandler.

En anden fremgangsmåde er at lave en anonym klasse til at håndtere problemstillingen istedet, så kan du også anvende din reference til status

fx. Kan det gøres sådan her:
public void init() {

    setSize(200, 200);
    status = new Label(\"MouseCoords\");
    add(\"Center\", status);
    addMouseListener(new MouseListener() {
        public void mousePressed(MouseEvent e) {
            status.setText(\"X: \" + e.getX() + \", Y: \" + e.getY());
        }
        public void mouseExited(MouseEvent e) {
        }
        public void mouseReleased(MouseEvent e) {
        }
        public void mouseClicked(MouseEvent e) {
        }
        public void mouseEntered(MouseEvent e) {
        }

    });

}
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