2015-03-27 2 views
0

У меня есть следующая проблема: я хочу изменить курсор JTextPane с типом контента text/html на Cursor.TEXT_CURSOR. Однако при установке setCursor(new Cursor(Cursor.TEXT_CURSOR)) он игнорируется. Я также попытался установить курсор в прослушиватель мыши, но он также напрямую переходит к стандартному курсору. Если тип содержимого равен text/plain, курсор по умолчанию является текстовым курсором. Есть ли у кого-нибудь идеи, как достичь этой цели? Я создал SCCEE, чтобы показать это поведение:Текстовый курсор для JTextPane с HTML

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); 
      } 
     }); 
    }   
} 

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

ответ

3

Так после немного больше рытья, казалось бы, в EditorKit (в данном случае HTMLEditorKit несет ответственность за принятие решений о том, что следует использовать курсор.

Вы можете изменить «по умолчанию» курсор, используя что-то как ...

jTextPane1.setContentType("text/html"); 
((HTMLEditorKit)tp.getEditorKit()).setDefaultCursor(cursor); 

по умолчанию «по умолчанию» определяется как private static final Cursor DefaultCursor = Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR);, которая очень раздражает ...

+0

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