我试图在我的应用程序中添加一个通用的右键单击文本框。我遇到了一个解决方案,我可以在框架顶部添加一个玻璃窗格,使其不可见并将其注册为通用鼠标监听器。如果组件是文本字段,则显示弹出式菜单,否则我将重新分派该事件。我粘贴下面的代码...当我添加一个glasspane到我的框架时,出现stackoverflow错误
这个例子工作正常。但是,当我使用这个我的申请,虽然,我在
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at apple.awt.CWindow._getLocationOnScreen(Native Method)
at apple.awt.CWindow.getLocationOnScreen(CWindow.java:878)
at java.awt.Component.getLocationOnScreen_NoTreeLock(Component.java:1960)
at java.awt.Component.getLocationOnScreen(Component.java:1938)
at javax.swing.SwingUtilities.convertPointToScreen(SwingUtilities.java:364)
at javax.swing.SwingUtilities.convertPoint(SwingUtilities.java:165)
at com.aesthete.csmart.ui.common.components.RightClickGlassPane.redispatchMouseEvent(RightClickGlassPane.java:79)
at com.aesthete.csmart.ui.common.components.RightClickGlassPane.mouseEntered(RightClickGlassPane.java:61)
得到一个计算器的错误,我明白,每次进入玻璃嵌板接收到该事件的组件上的鼠标,然后时间重新调度。但为什么它被转换成递归调用?
编辑: 只是想告诉大家我是如何与Camickr建议解决了这个问题:
SwingUtilities.invokeLater(new Runnable() {
public void run() {
final JPopupMenu popup = new JPopupMenu();
JMenuItem mnItemCopy = new JMenuItem("Copy", CommonUI.getScaledImage(13, 13, "/images/copy.png"));
JMenuItem mnItemCut = new JMenuItem("Cut", CommonUI.getScaledImage(13, 13, "/images/cut.png"));
JMenuItem mnItemPaste = new JMenuItem("Paste", CommonUI.getScaledImage(13, 13, "/images/paste.png"));
popup.add(mnItemCopy);
popup.add(mnItemCut);
popup.add(mnItemPaste);
Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {
@Override
public void eventDispatched(AWTEvent event) {
if(event instanceof MouseEvent) {
MouseEvent mouseevent=(MouseEvent)event;
if(mouseevent.isPopupTrigger()) {
if (mouseevent.getComponent() instanceof JTextField) {
popup.show(mouseevent.getComponent(), mouseevent.getX(), mouseevent.getY());
}
}
}
}
}, AWTEvent.MOUSE_EVENT_MASK);
}
});
为了更快提供更好的帮助,请发布[SSCCE](http://sscce.org/)。请注意,根据未显示问题的代码,现在有** 2个已删除的帖子!现在已经编辑了相同的代码,以避免进一步的混淆。 – 2011-12-23 03:56:01
谢谢安德鲁。抱歉,关于不正确的SSCCE。我使用了我在代码库中发布的同一个类。我解压出来,看到它正确运行。我不确定为什么在与我的代码库集成时失败。我想我会把我所有的信息。 – sethu 2011-12-23 05:22:27
很高兴你把它分类。反向投票 - 报告解决方案。 – 2011-12-23 05:26:36