我的代码是这样的:
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();
}现在我认为对所有文本组件使用一个弹出窗口会更好,如何传递有关哪个组件被单击以复制文本的信息?也许对于这种情况有一些更通用的解决方案?
发布于 2011-01-09 12:45:56
操作应该通过扩展TextAction来创建。TextAction类有一个方法,它将返回最后一个具有焦点的文本组件。然后可以在弹出菜单或添加到菜单栏的菜单上使用此操作。因此,创建菜单项的基本代码为:
JMenuItem copy = new JMenuItem( new CustomAction() );然而,它甚至比这更简单,因为DefaultEditorKit已经提供了默认的复制操作,所以您所需要做的就是:
JMenuItem copy = new JMenuItem( new DefaultEditorKit.CopyAction() );发布于 2011-01-09 06:35:41
event类有一个getSource()方法,它告诉您事件的起因是哪个组件。
https://stackoverflow.com/questions/4636298
复制相似问题