我似乎遇到了 JTextPane 的问题。我已扩展 JTextPane 以呈现浮动图像,因为 JTextPane 图标功能不适合我的目的。我希望用户能够单击图像,并执行某些事件。但是,当我单击图像时,即使我使用 evt.consume(),插入符号和选择也会在 JTextPane 中更新。我通常希望与图像交互的单击和鼠标事件根本不会影响插入符号的位置或选择。相关代码:
public class JTextPaneImg extends JTextPane {
public JTextPaneImg(){
super();
addMouseListener(new java.awt.event.MouseAdapter() {
public void mousePressed(java.awt.event.MouseEvent evt) {
formMousePressed(evt);
}
public void mouseReleased(java.awt.event.MouseEvent evt) {
formMouseReleased(evt);
}
});
}
private void formMousePressed(java.awt.event.MouseEvent evt) {
if (imgBound.contains(evt.getPoint())) {
evt.consume();
//Do some stuff in here to interact with the image
// but the event still undesirably interacts with selection/caret
}
}
private void formMouseReleased(java.awt.event.MouseEvent evt) {
if (imgBound.contains(evt.getPoint())) {
evt.consume();
//Do some stuff in here to interact with the image
// but the event still undesirably interacts with selection/caret
}
}
}
我什至调用了 getMouseListeners 并验证我自己的鼠标侦听器是数组中的最后一个,我读到侦听器是从最高到最低索引调用的,这意味着如果我的侦听器调用消耗,它应该是最后一个对事件采取行动的。为什么我的鼠标单击事件仍在更新插入符号呢?这是外观和感觉的问题吗?