一个 jPopup 用于多个控件

发布于 2024-10-10 17:13:53 字数 516 浏览 1 评论 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();
}

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

I have code like this:

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

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

and for menu items I have actions:

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

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

Now I think it would be better to use one popup for all text components, how to pass info about which component was clicked to copy text? Maybe there is some more general solution for such case?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

柠檬色的秋千 2024-10-17 17:13:53

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

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

但是,它比这更容易,因为 DefaultEditorKit 已经提供了默认的复制操作,因此您需要做的就是:

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

Actions should be created by extending TextAction. The TextAction class has a method that will return the text component that last has focus. This action can then be used on a popup menu or on a menu added to the menu bar. So the basic code to create the menu item would be:

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

However, its even easier than that because the DefaultEditorKit already provides a default copy action so all you need to do is:

JMenuItem copy = new JMenuItem( new DefaultEditorKit.CopyAction() );
驱逐舰岛风号 2024-10-17 17:13:53

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

the Event class has a getSource() method that tells you what component was the cause of the event.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文