我有这样的代码:
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();
}
现在我认为最好对所有文本组件使用一个弹出窗口,如何传递有关单击哪个组件来复制文本的信息?也许对于这种情况有一些更通用的解决方案?
最佳答案
Action 应该通过扩展TextAction来创建。 TextAction 类有一个方法,该方法将返回最后获得焦点的文本组件。然后可以在弹出菜单或添加到菜单栏的菜单上使用此操作。因此创建菜单项的基本代码是:
JMenuItem copy = new JMenuItem( new CustomAction() );
但是,它比这更容易,因为 DefaultEditorKit 已经提供了默认的复制操作,因此您需要做的就是:
JMenuItem copy = new JMenuItem( new DefaultEditorKit.CopyAction() );
关于java - 一个 jPopup 用于多个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636298/