gpt4 book ai didi

java - 如何在 Swing JEditorPane 中使用击键触发超链接

转载 作者:行者123 更新时间:2023-12-01 17:40:26 27 4
gpt4 key购买 nike

我正在尝试使用“Enter”键在 JEditorPane 中触发超链接。这样插入符号下的超链接(如果有)就会触发,而不必用鼠标单击。

如有任何帮助,我们将不胜感激。

最佳答案

首先,HyperlinkEvent 仅在不可编辑的 JEditorPane 上触发,因此用户很难知道插入符何时位于链接上。

但是如果您确实想这样做,那么您应该使用按键绑定(bind)(而不是 KeyListener)将操作绑定(bind)到 ENTER KeyStroke。

实现此目的的一种方法是通过在按下 Enter 键时将 MouseEvent 分派(dispatch)到编辑器 Pane 来模拟 mouseClick。像这样的事情:

class HyperlinkAction extends TextAction
{
public HyperlinkAction()
{
super("Hyperlink");
}

public void actionPerformed(ActionEvent ae)
{
JTextComponent component = getFocusedComponent();
HTMLDocument doc = (HTMLDocument)component.getDocument();
int position = component.getCaretPosition();
Element e = doc.getCharacterElement( position );
AttributeSet as = e.getAttributes();
AttributeSet anchor = (AttributeSet)as.getAttribute(HTML.Tag.A);

if (anchor != null)
{
try
{
Rectangle r = component.modelToView(position);

MouseEvent me = new MouseEvent(
component,
MouseEvent.MOUSE_CLICKED,
System.currentTimeMillis(),
InputEvent.BUTTON1_MASK,
r.x,
r.y,
1,
false);

component.dispatchEvent(me);
}
catch(BadLocationException ble) {}
}
}
}

关于java - 如何在 Swing JEditorPane 中使用击键触发超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1506679/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com