什么是getSource?它返回什么?
什么是getActionCommand(),返回什么?
我对这两者感到困惑,谁能给我与众不同? UI中的getSource和getActionCommand()有什么用?特别是TextField或JTextField?
最佳答案
假设您正在谈论 ActionEvent
类,则这两种方法之间存在很大差异。
getActionCommand()
为您提供一个表示操作命令的字符串。该值是特定于组件的;对于JButton
,您可以选择使用setActionCommand(String command)
设置值,但对于JTextField
(如果未设置),它将自动为您提供文本字段的值。根据javadoc,这是为了与java.awt.TextField
兼容。
getSource()
由EventObject
是其子级的ActionEvent
类指定(通过java.awt.AWTEvent
)。这为您提供了事件来源的引用。
编辑:
这是一个例子。有两个字段,一个字段有明确设置的 Action 命令,另一个则没有。在每个文本框中输入一些文本,然后按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);
}
}
关于java - getSource()和getActionCommand(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8214958/