У меня есть следующая проблема: я хочу изменить курсор JTextPane
с text/html
типа text/html
на Cursor.TEXT_CURSOR
. Однако при установке setCursor(new Cursor(Cursor.TEXT_CURSOR))
он игнорируется. Я также попытался установить курсор в прослушиватель мыши, но он также напрямую переходит к стандартному курсору. Если тип содержимого является text/plain
, курсор по умолчанию является текстовым курсором. Есть ли у кого-нибудь идеи, как достичь этой цели? Я создал SCCEE, чтобы показать это поведение:
import java.awt.Cursor;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.WindowConstants;
public class TextPaneHtmlCursor extends JFrame {
private JScrollPane jScrollPane1;
private JTextPane jTextPane1;
public TextPaneHtmlCursor() {
initComponents();
}
private void initComponents() {
jScrollPane1 = new JScrollPane();
jTextPane1 = new JTextPane();
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
jTextPane1.setContentType("text/html");
jTextPane1.setCursor(new Cursor(Cursor.TEXT_CURSOR));
jScrollPane1.setViewportView(jTextPane1);
getContentPane().add(jScrollPane1);
pack();
}
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TextPaneHtmlCursor().setVisible(true);
}
});
}
}
Большое спасибо!
Поэтому, после немного большего количества копания, казалось бы, EditorKit
(в этом случае HTMLEditorKit
отвечает за принятие решений о том, какой именно курсор следует использовать.
Вы можете изменить курсор по умолчанию, используя что-то вроде...
jTextPane1.setContentType("text/html");
((HTMLEditorKit)tp.getEditorKit()).setDefaultCursor(cursor);
По умолчанию "по умолчанию" определяется как private static final Cursor DefaultCursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
Значение по умолчанию. private static final Cursor DefaultCursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);
что очень раздражает...