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.
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);
}
}
20. februar 2004 - 11:38
#7
svar, men arne har sådan set svaret først, jeg har blot uddybet lidt