Java Jtextpane单击以在选择时创建弹出菜单效果不符合预期
我有一个JTextPane,它位于JFrame中,有一个弹出菜单,通过JTextPane.setComponentPopupMenu方法分配给JTextPane 我想给JTextPane一个“类似单词”的弹出行为。我的意思是,如果在当前文本选择之外单击鼠标右键,插入符号将重新定位到右键单击的位置,并禁用影响文本选择的菜单选项(例如剪切、复制或粗体)。如果在当前文本选择中单击鼠标右键,弹出窗口将显示启用了影响文本选择的选项,文本选择将保持不变,插入符号不会移动 问题是我似乎找不到我可以将处理选择更改的代码放在哪里。我试过:Java Jtextpane单击以在选择时创建弹出菜单效果不符合预期,java,caret,jtextpane,popupmenu,Java,Caret,Jtextpane,Popupmenu,我有一个JTextPane,它位于JFrame中,有一个弹出菜单,通过JTextPane.setComponentPopupMenu方法分配给JTextPane 我想给JTextPane一个“类似单词”的弹出行为。我的意思是,如果在当前文本选择之外单击鼠标右键,插入符号将重新定位到右键单击的位置,并禁用影响文本选择的菜单选项(例如剪切、复制或粗体)。如果在当前文本选择中单击鼠标右键,弹出窗口将显示启用了影响文本选择的选项,文本选择将保持不变,插入符号不会移动 问题是我似乎找不到我可以将处理选择更
- 使用“PopupMenuWillBecomeVisible”事件,该事件在弹出窗口变为可见之前触发。传递到此方法的事件不包含任何鼠标事件信息,因此我无法使用viewtomodel了解如何修改选择。我可以用MouseInfo,但这充其量也令人怀疑
- 在JTextPane或JFrame中使用MousePressed/MouseReleased事件。显然,当弹出菜单被触发时,这两个事件都不会被调用。事实上,我仍然无法确定弹出菜单的父组件是什么。(我确实读到,在windows中,“MouseRelease”是弹出式触发器,而在其他系统中,“MousePressed”是触发器。我尝试了这两种方法,但都不起作用)