the getSource() and getActionCommand()
action, event-handling, java, swing, user-interface
Solution
Assuming you are talking about the `ActionEvent` class, then there is a big difference between the two methods.
`getActionCommand()` gives you a String representing the action command. The value is component specific; for a `JButton` you have the option to set the value with `setActionCommand(String command)` but for a `JTextField` if you don't set this, it will automatically give you the value of the text field. According to the javadoc this is for compatability with `java.awt.TextField`.
`getSource()` is specified by the `EventObject` class that `ActionEvent` is a child of (via `java.awt.AWTEvent`). This gives you a reference to the object that the event came from.
Edit:
Here is a example. There are two fields, one has an action command explicitly set, the other doesn't. Type some text into each then press enter.
public class Events implements ActionListener {
private static JFrame frame;
public static void main(String[] args) {
frame = new JFrame("JTextField events");
frame.getContentPane().setLayout(new FlowLayout());
JTextField field1 = new JTextField(10);
field1.addActionListener(new Events());
frame.getContentPane().add(new JLabel("Field with no action command set"));
frame.getContentPane().add(field1);
JTextField field2 = new JTextField(10);
field2.addActionListener(new Events());
field2.setActionCommand("my action command");
frame.getContentPane().add(new JLabel("Field with an action command set"));
frame.getContentPane().add(field2);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(220, 150);
frame.setResizable(false);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent evt) {
String cmd = evt.getActionCommand();
JOptionPane.showMessageDialog(frame, "Command: " + cmd);
}
}
Problem
What is getSource? and what does it return? and what is getActionCommand() and what does it return?? I am getting confused between these two can anyone give or differentiate them to me? what's the use of getSource and getActionCommand() in UI's? specifically TextField or JTextField?