什么是getSource?它返回什么?
什么是getActionCommand(),返回什么?
我对这两者感到困惑,谁能给我与众不同?UI中的getSource和getActionCommand()有什么用?特别是TextField或JTextField?
假设您在谈论ActionEvent类,那么这两种方法之间会有很大的不同。
ActionEvent
getActionCommand() 给您一个代表动作命令的字符串。该值是特定于组件的;对于a,JButton您可以选择使用来设置值,setActionCommand(String command)对于a,JTextField如果您未设置此值,它将自动为您提供文本字段的值。根据javadoc,这是为了与兼容java.awt.TextField。
getActionCommand()
JButton
setActionCommand(String command)
JTextField
java.awt.TextField
getSource() 由(via )的子EventObject类指定。这为您提供了事件来源的参考。ActionEvent``java.awt.AWTEvent
getSource()
EventObject
ActionEvent``java.awt.AWTEvent
编辑:
这是一个例子。有两个字段,一个字段有明确设置的动作命令,另一个则没有。在每个文本框中输入一些文本,然后按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); } }