Текстовый курсор для JTextPane с HTML

1

У меня есть следующая проблема: я хочу изменить курсор 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);
            }
        });
    }        
}

Большое спасибо!

Теги:
cursor
jtextpane

1 ответ

4
Лучший ответ

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

  • 0
    Dead @MadProgrammer, после прочтения вашего поста (до обновления) я тоже заглянул в исходный код и нашел такое же решение. Спасибо за помощь!
  • 0
    Спасибо за ваш тяжелый труд. Это решение сработало для меня!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню