Wie gesagt:
1. Komponente an Punkt (x,y) holen: SwingUtilities#getDeepestComponentAt(parent, x, y)
2. MouseListener holen: Component#getMouseListeners()
3. Event triggern: MouseListener#mouseClicked()
byto, ich bitte dich, wieso fängst du schon wieder mit diesem xy-salat an? ;(
Hat denn einer von euch (bzw von uns^^) überhaupt mal nen Blick in die Api geworfen, seit beginn dieser Diskussion?
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/AbstractButton.html#doClick()
Was is'n das, heh?
Hier ein fast unnötiges Beispiel:
[highlight=Java]
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class NoRobot extends JFrame implements ActionListener{
private JButton button;
private JLabel label;
public NoRobot(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500,200);
getContentPane().setLayout(new GridLayout(2,1));
button=new JButton("Mit Maus klicken oder warten...");
getContentPane().add(button);
label=new JLabel("Bisher nichts gehört...");
getContentPane().add(label);
button.addActionListener(this);
(new Thread(){
@Override public void run(){
while(!isInterrupted()){
try{
sleep(5000);
}catch(InterruptedException e){}
button.doClick();
}
}
}).start();
}
@Override
public void actionPerformed(ActionEvent e) {
label.setText((Math.random()>0.5 ?
"Yuhu, ich höre was " :
"Aah, da meldet sich der button wieder ")
+e.getWhen());
}
public static void main(String..._){
(new NoRobot()).setVisible(true);
}
}
[/highlight]
Allgemeiner funktioniert es mit diesem hier statt doClick():
[highlight=Java]
button.dispatchEvent(
new MouseEvent(button,
MouseEvent.MOUSE_PRESSED,
System.currentTimeMillis(),
MouseEvent.BUTTON1_MASK,
button.getX()+button.getWidth()/2,
button.getY()+button.getHeight()/2,
1,
false,
MouseEvent.BUTTON1));
button.dispatchEvent(
new MouseEvent(button,
MouseEvent.MOUSE_RELEASED,
System.currentTimeMillis(),
MouseEvent.BUTTON1_MASK,
button.getX()+button.getWidth()/2,
button.getY()+button.getHeight()/2,
1,
false,
MouseEvent.BUTTON1));
button.dispatchEvent(
new MouseEvent(button,
MouseEvent.MOUSE_CLICKED,
System.currentTimeMillis(),
MouseEvent.BUTTON1_MASK,
button.getX()+button.getWidth()/2,
button.getY()+button.getHeight()/2,
1,
false,
MouseEvent.BUTTON1));
[/highlight]
das könnte man dann auch auf components loslassen, die kein doClick zur verfügung stellen...
Kann mir jemand sagen, ob mein programm so eigentlich OK ist, oder ob da jetzt noch irgendwo irgendwelche invokeLater() hinsollten, bin mir bei sowas stets unsicher