0

我有这样的代码:

    jTextArea1.add(jPopupMenu1);
    jTextArea1.setComponentPopupMenu(jPopupMenu1);

    jTextField1.add(jPopupMenu2);
    jTextField1.setComponentPopupMenu(jPopupMenu2);

对于菜单项,我有操作:

private void CopyActionPerformed(java.awt.event.ActionEvent evt) {
  jTextArea1.copy();

}
private void Copy1ActionPerformed(java.awt.event.ActionEvent evt) {
    jTextField1.copy();
}

现在我认为对所有文本组件使用一个弹出窗口会更好,如何传递有关单击哪个组件来复制文本的信息?对于这种情况,也许有一些更通用的解决方案?

4

2 回答 2

1

Event 类有一个 getSource() 方法,它告诉您哪个组件是事件的原因。

于 2011-01-08T22:35:40.633 回答
1

动作应该通过扩展 TextAction 来创建。TextAction 类有一个方法,该方法将返回最后具有焦点的文本组件。然后可以在弹出菜单或添加到菜单栏的菜单上使用此操作。所以创建菜单项的基本代码是:

JMenuItem copy = new JMenuItem( new CustomAction() );

然而,它比这更容易,因为 DefaultEditorKit 已经提供了一个默认的复制操作,所以你需要做的就是:

JMenuItem copy = new JMenuItem( new DefaultEditorKit.CopyAction() );
于 2011-01-09T04:45:55.510 回答