我有这样的代码:
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();
}
现在我认为最好为所有文本组件使用一个弹出窗口,如何传递有关单击哪个组件以复制文本的信息?也许这种情况有一些更通用的解决方案?
答案 0 :(得分:1)
Event类有一个getSource()方法,告诉你哪个组件是事件的原因。
答案 1 :(得分:1)
应该通过扩展TextAction来创建操作。 TextAction类有一个方法,它将返回最后具有焦点的文本组件。然后可以在弹出菜单或添加到菜单栏的菜单上使用此操作。因此,创建菜单项的基本代码是:
JMenuItem copy = new JMenuItem( new CustomAction() );
然而,它比这更容易,因为DefaultEditorKit已经提供了默认的复制操作,所以你需要做的就是:
JMenuItem copy = new JMenuItem( new DefaultEditorKit.CopyAction() );