什么是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/

10-12 12:20