Re: ActionEvent Generator
On 02/01/2015 08:30 PM, Jeff Higgins wrote:
On 02/01/2015 07:49 PM, Jerry Stuckle wrote:
Hi, all,
I have a need to generate an ActionEvent to drive handlers, and am
having trouble finding examples. It doesn't seem to be as easy as a
PropertyChangeEvent, for which there are multiple examples. I've also
looked at some of the Java source code and it seems somewhat convoluted.
I don't need something real fancy - just the ability to generate an
ActionEvent in my object and have it passed to the handlers. Can anyone
point me to some example code showing an easy way to do this?
<http://alvinalexander.com/java/java-action-abstractaction-actionlistener>
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class HellowSwing extends JFrame {
public HellowSwing() {
JButton btn = new JButton("HelloSwing");
btn.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
StringBuilder cmd = new StringBuilder();
cmd.append("mouse-clicked ");
cmd.append(e.getX());
cmd.append(" ");
cmd.append(e.getY());
ActionEvent ae = new ActionEvent(
btn, ActionEvent.ACTION_PERFORMED,
cmd.toString(),
e.getWhen(),
e.getModifiersEx());
fireActionEvent(ae);
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
void fireActionEvent(ActionEvent e) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
ActionListener[] listeners = btn.getActionListeners();
for (ActionListener l : listeners) {
l.actionPerformed(e);
}
}
});
}
});
btn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
}
});
add(btn);
pack();
setTitle("HellowSwing");
setSize(300, 200);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new HellowSwing().setVisible(true);
}
});
}
}