如何知道光标在哪个 JTextPane 中?

Posted

技术标签:

【中文标题】如何知道光标在哪个 JTextPane 中?【英文标题】:How to know in which JTextPane the cursor is? 【发布时间】:2022-01-21 19:41:01 【问题描述】:

我有几个 JtextPanes,我想创建一个方法,将变量的值设置为已单击的 TextPane 的名称,因为另一个方法将使用它。还有一个按钮,当用户单击它时添加一个新的 jTextPane,我希望这些新的 TextPanes 继承该方法。或者,如果您知道实现这一目标的更简单方法,我愿意阅读您。如果您需要更多信息或更多代码,请告诉我。

static JTextPane focus;

private void redColorActionPerformed(java.awt.event.ActionEvent evt)  //Ths is the method that works with the focus variable. It changes the color of the text in the clicked textpane.                                      
        TextEditor.cambiarColor(new java.awt.Color(255, 0, 0), focus);
      

【问题讨论】:

每个 JtextPane 只需要一个鼠标单击事件,通过在事件focus = (JtextPane)e.getSource(); 中使用类似这样的内容来更改焦点变量。如果您希望每个 JtextPane 都有该方法,那么我建议扩展 JtextPane 并创建一个内置此功能的自定义 JtextPane。 redColorActionPerformed(java.awt.event.ActionEvent evt) - 单击按钮或菜单项时,您似乎正在调用该方法。因此,您应该向组件添加TextActionTextAction 有一个 getFocusedComponent 方法,它将返回最后一个具有焦点的文本组件。查看:***.com/questions/5668690/… 获取基本示例。 被点击的 TextPane 的名称 - 当你点击一个文本组件时,caret 被绘制在组件中,表示你可以在组件中输入。 “光标”是您移动鼠标时绘制的内容。使用适当的术语会产生更好的答案。 【参考方案1】:

听起来你想知道当前鼠标位置下的当前 Swing JTextPane 组件?然后尝试

获取当前鼠标位置
Point position = MouseInfo.getPointerInfo().getLocation();
Get the component在鼠标位置下
 Component c = SwingUtilities.getDeepestComponentAt(
     the-root-component,
     position.getX(), 
     position.getY()
 );
 if (c instanceof JTextPane) 
    // do your logic
 

【讨论】:

以上是关于如何知道光标在哪个 JTextPane 中?的主要内容,如果未能解决你的问题,请参考以下文章

来自 jTextPane 的可点击文本

MFC如何知道光标在那个控件上 用哪个函数?谢谢

突出显示 JTextPane 中的当前行

JavaSwing中JTextPane中如何绘制行号

如何在移动设备的 JavaScript 中查看光标在哪个 div 上?

如何使用 Java 代码查看 JTextPane 中的段落符号?