【发布时间】:2014-07-08 05:22:01
【问题描述】:
我正在 Swing 中实现一个编辑器。它显示带有超链接的纯文本。问题陈述是,当用户单击超链接时,弹出菜单必须出现在鼠标位置或超链接文本下方。用户可以从菜单中选择选项,超链接的文本将更新为用户选择的选项中的文本。此外,选择该选项后,菜单消失。
我正在 jTextPane 和 jEditor 窗格上尝试它。我使用 hyperlinkUpdate 监听器来显示弹出菜单,但它总是出现在 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);
}
}
请有人在这件事上指导我。 提前致谢。
【问题讨论】:
-
考虑提供一个runnable example 来证明您的问题,这将减少猜测工作并产生更好的响应
-
@MadProgrammer 我在问题中添加了一些代码。现在 Rite 我刚刚制作了一个带有一个 menuItem 的示例弹出菜单来检查我的工作。
-
不要使用
getMousePosition,您应该尝试在编辑器视图中找到关联的Element所在的位置 -
@MadProgrammer...好吧,让我试试吧
-
@MadProgrammer 我试试 evt.getSourceElement() 但这个东西也没有坐标。
标签: java swing jtextpane jeditorpane jpopupmenu