一个jPopup用于几个控件

时间:2011-01-08 21:40:07

标签: java swing jpopupmenu

我有这样的代码:

    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();
}

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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

JMenuItem copy = new JMenuItem( new DefaultEditorKit.CopyAction() );