Кажется, у меня проблема с 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 и проверил, что мой собственный прослушиватель мыши является последним в массиве, я читал, что прослушиватели вызываются от самого высокого к самому низкому индексу, что означает, что если мой прослушиватель вызывает потребление, он должен быть последним, чтобы воздействовать на событие. Почему мое событие щелчка мыши все еще обновляет каретку? Это проблема с внешним видом?