Avatar billede cvpcvp Nybegynder
20. februar 2004 - 08:30 Der er 7 kommentarer og
1 løsning

Fake et event

Er det muligt at "fake" et event?

Sådan at man i et stykke kode kan skrive noget lignende:

sentMouseclickevent(left_doubleclick);

eller sådan noget lignende.
Sådan at man sender en event til en listener uden at der egentlig er blevet trykket på noget.
Avatar billede arne_v Ekspert
20. februar 2004 - 09:18 #1
Kan du ikke bare:

eventmethod(new eventobject());

?
Avatar billede mortenkjeldberg Nybegynder
20. februar 2004 - 09:52 #2
Er der ikke noget der hedder fireMouseClickEvent().

/Mort3n
Avatar billede cvpcvp Nybegynder
20. februar 2004 - 10:23 #3
kan du uddybe det lidt arne_v?
Avatar billede conrad Nybegynder
20. februar 2004 - 11:04 #4
Som Arne siger kan du vel lave en MouseEvent og give den til den respektive Listener:

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

public class FakeMouse implements MouseListener
{

    public JButton but;
    public FakeMouse()
    {
        but = new JButton();
        but.addMouseListener(this);   
    }

    public void mouseClicked(MouseEvent e) {System.out.println("got event click");}
    public void mouseEntered(MouseEvent e) {}
    public void mouseExited(MouseEvent e) {}
    public void mousePressed(MouseEvent e){System.out.println("got event press");}
    public void mouseReleased(MouseEvent e){} 

    public void fakeIt(int parm1, int parm2)
    {
        /*
        Parameters:
        source - the Component that originated the event
        id - the integer that identifies the event
        when - a long int that gives the time the event occurred
        modifiers - the modifier keys down during event (e.g. shift, ctrl, alt, meta) Either extended _DOWN_MASK or old _MASK modifiers should be used, but both models should not be mixed in one event. Use of the extended modifiers is preferred.
        x - the horizontal x coordinate for the mouse location
        y - the vertical y coordinate for the mouse location
        clickCount - the number of mouse clicks associated with event
        popupTrigger - a boolean, true if this event is a trigger for a popup menu
        button - which of the mouse buttons has changed state. NOBUTTON, BUTTON1, BUTTON2 or BUTTON3.

        */
        switch(parm2)
        {
            case MouseEvent.MOUSE_PRESSED:
            {
                mousePressed(new MouseEvent(but, parm1, System.currentTimeMillis(), parm2, 1, 1, 1, false,MouseEvent.BUTTON1));
                break;
            }
            case MouseEvent.MOUSE_CLICKED:
            {
                mouseClicked(new MouseEvent(but, parm1, System.currentTimeMillis(), parm2, 1, 1, 1, false,MouseEvent.BUTTON1));
                break;
            }
        }
    }

    public static void main(String args[])
    {
        System.out.println("running...");
        FakeMouse fm = new FakeMouse();
       
        fm.fakeIt(MouseEvent.MOUSE_FIRST,MouseEvent.MOUSE_PRESSED);
        fm.fakeIt(MouseEvent.MOUSE_FIRST,MouseEvent.MOUSE_CLICKED);   
    }
}
Avatar billede cvpcvp Nybegynder
20. februar 2004 - 11:33 #5
jeg siger tak conrad!!
Hvis du vil have point skal du lige smide et svar...
Avatar billede cvpcvp Nybegynder
20. februar 2004 - 11:36 #6
hvis jeg må henlede jeres opmærksomhed på et andet spørgsmål jeg ikke rigtig har fået svar på...
http://www.eksperten.dk/spm/467346
i er jo så kloge :-)
så kan i jo nok svare på det også¨...
jeg takker på forhånd hvis i bare gider at kigge på det... det har nemlig drillet mig noget tid nu..
Avatar billede conrad Nybegynder
20. februar 2004 - 11:38 #7
svar, men arne har sådan set svaret først, jeg har blot uddybet lidt
Avatar billede arne_v Ekspert
20. februar 2004 - 12:41 #8
Jeg har set det spørgsmål - men har ikke haft tid til at studere problemet ...
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