我正在尝试使用“Enter”击键在JEditorPane中触发超链接。这样插入符号下的超链接(如果有的话)就会触发而不必用鼠标点击。
任何帮助都将不胜感激。
答案 0 :(得分:5)
首先,HyperlinkEvent仅针对不可编辑的JEditorPane触发,因此用户很难知道插入符号何时通过链接。
但是如果你想这样做,那么你应该使用Key Bindings(而不是KeyListener)将Action绑定到ENTER KeyStroke。
执行此操作的一种方法是通过在按下Enter键时将MouseEvent分派到编辑器窗格来模拟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) {}
}
}
}