Java Swing中超链接位置的jPopupMenu

Java Swing中超链接位置的jPopupMenu,java,swing,jtextpane,jeditorpane,jpopupmenu,Java,Swing,Jtextpane,Jeditorpane,Jpopupmenu,我正在Swing中实现一个编辑器。它显示带有超链接的纯文本。问题是,当用户单击超链接时,必须在鼠标位置或超链接文本下方显示弹出菜单。用户可以从菜单中选择该选项,超链接的文本将更新为用户选择的选项中的文本。此外,选择该选项后,菜单将消失 我正在jTextPane和jEditor pane上试用。我使用hyperlinkUpdate listener来显示弹出菜单,但它总是出现在GUI的左上角。 此外,我找不到如何更新超链接的文本 以下是hyperlinkUpdate事件的代码: private v

我正在Swing中实现一个编辑器。它显示带有超链接的纯文本。问题是,当用户单击超链接时,必须在鼠标位置或超链接文本下方显示弹出菜单。用户可以从菜单中选择该选项,超链接的文本将更新为用户选择的选项中的文本。此外,选择该选项后,菜单将消失

我正在jTextPane和jEditor pane上试用。我使用hyperlinkUpdate listener来显示弹出菜单,但它总是出现在GUI的左上角。 此外,我找不到如何更新超链接的文本

以下是hyperlinkUpdate事件的代码:

private void jEditorPane1HyperlinkUpdate(javax.swing.event.HyperlinkEvent evt) {                                             
    if(evt.getEventType() == HyperlinkEvent.EventType.ACTIVATED){
    System.out.println(evt.getDescription());
    jPopupMenu1.setAlignmentX(jEditorPane1.getMousePosition().x);
    jPopupMenu1.setAlignmentY(jEditorPane1.getMousePosition().y);
    jPopupMenu1.setVisible(true);
    }
}      
有人好心地指导我这件事。
提前谢谢。

电话应该是这样的

        JPopupMenu popup = new JPopupMenu();
        popup.add("Item 1");
        popup.add("Item 2");
        popup.show(mouseEvent.getComponent(),mouseEvent.getX(),mouseEvent.getY());
请参见此处的示例

考虑提供一个演示您的问题的示例,这将减少猜测工作并产生更好的结果response@MadProgrammer我在问题中添加了一些代码。Rite现在,我刚刚制作了一个带有一个菜单项的弹出菜单示例,用于检查我的工作。不要使用getMousePosition,您应该尝试查找关联元素在编辑器中的位置view@MadProgrammer...okay,让我试试way@MadProgrammer我尝试evt.getSourceElement,但这个东西也没有坐标。实际上我使用的是超链接事件,所以鼠标事件不起作用。好的。然后就有了源元素。使用图元的起点/终点偏移,并使用modelToView将其转换为X、Y坐标。要使用的组件是JEditorPane instanceI用户的popup.showjEditorPane1,jEditorPane1.getMousePosition.x,jEditorPane1.getMousePosition.y;'在您的代码中,它以某种方式工作。现在将把事件链接到项。最好使用jEditorPane1传递元素偏移量的modelToView方法来获得Hyperlink的正确坐标。我已经这样做了‘矩形rec=jEditorPane1.modelToViewevt.getSourceElement.getStartOffset;popup.showjEditorPane1,rec.x,rec.y;'但只有在超链接的开头单击时,才会显示弹出菜单。另外,这与startOffset无关,在“getEndOffest”上也会发生同样的事情