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