Mausklick simulieren

  • Themenstarter Themenstarter Reinert
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
R

Reinert

Gast
Hallo!

Kann man in Java mit einer Codezeile einen Klick auf einen Button oder einen
JMenuItem simulieren?

Danke
Marcus
 
Wenn der Klick auf einem JButton oder JMenuItem, das du kennst erfolgen soll, geht das am einfachsten so:

Code:
derButton.fireActionPerformed(new ActionEvent(...));

für das, was in ActionEvent rein muss, müsstest du mal in der API Doc nachschauen.

[edit]
Mal wieder zweiter.
[edit]
 
Habe im Netz nur dies gefunden:


import java.awt.event.ActionEvent;
button.fireActionPerformed(new ActionEvent(button, ActionEvent.ACTION_PERFORMED, ""));

Aber leider funktioniert das nicht.
:-(

Marcus
 
Ähm ... du meinst nicht zufällig die Funktion "doClick()" von AbstractButton

Code:
JMenuItem.doClick();
JButton.doClick();

???

Ist doch einfacher und sauberer, als eine eigene ActionPerformed auszulösen, oder nicht ...?
 
Danke für den Hinweis. Eigentlich sollte der Befehl auch funktionieren,
aber bei mir scheint der Wurm drin zu sein:

Ich paste mal den code:
Habe ich was vergessen zu includieren?

/
Code:
* Listing3110.java */
 
 import java.awt.*;
 import java.awt.event.*;
 import java.awt.event.ActionEvent;
 import javax.swing.*;

 
 class YesNoDialog
 extends Dialog
 implements ActionListener
 {
   boolean result;
 
   public YesNoDialog(Frame owner, String msg)
   {
     super(owner, "Ja-/Nein-Auswahl", true);
     //Fenster
     setBackground(Color.lightGray);
     setLayout(new BorderLayout());
     setResizable(false); //Hinweis im Text beachten
     Point parloc = owner.getLocation();
     setLocation(parloc.x + 30, parloc.y + 30);
     //Message
     add("Center", new Label(msg));
     //Buttons
     Panel panel = new Panel();
     panel.setLayout(new FlowLayout(FlowLayout.CENTER));
     Button button = new Button("Ja");
     button.addActionListener(this);
     panel.add(button);
     button = new Button("Nein");
     button.addActionListener(this);
     panel.add(button);
     add("South", panel);
     pack();
   }
 
   public void actionPerformed(ActionEvent event)
   {
     result = event.getActionCommand().equals("Ja");
     setVisible(false);
     dispose();
   }
 
   public boolean getResult()
   {
     return result;
   }
 }
 
 public class Listing3110
 extends Frame
 implements ActionListener
 {
   public static void main(String[] args)
   {
     Listing3110 wnd = new Listing3110();
     wnd.setVisible(true);
   }
 
   public Listing3110()
   {
     //super("Modale Dialoge");
     //setLayout(new FlowLayout());
     //setBackground(Color.lightGray);
     Button button = new Button("Ende");
     button.addActionListener(this);
     add(button);
          
     setLocation(100,100);
     setSize(300,200);
     setVisible(true);

    button.doClick();

     
     

   }
 
   public void actionPerformed(ActionEvent event)
   {
     String cmd = event.getActionCommand();
     if (cmd.equals("Ende")) {
       
       YesNoDialog dlg;
       dlg = new YesNoDialog(
         this,
         "Wollen Sie das Programm wirklich beenden?"
       );
       dlg.setVisible(true);
       //Auf das Schließen des Dialogs warten...
       if (dlg.getResult()) {
         setVisible(false);
         dispose();
         System.exit(0);
       }
     }
   }
 }
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben