JTextPane: how to set the font size

Please view the following code

import java.awt.Color;  
import java.awt.Dimension;  
import java.awt.EventQueue;  
import java.awt.FlowLayout;  
import java.util.ArrayList;  
import java.util.Scanner;  
import javax.swing.*;  
import javax.swing.event.DocumentEvent;  
import javax.swing.event.DocumentListener;  
import javax.swing.text.BadLocationException;  
import javax.swing.text.Style;  
import javax.swing.text.StyleConstants;  
import javax.swing.text.StyledDocument;  

public class Form extends JFrame  
{  
    private JTextPane textPane;  
    private JLabel results;  
    private JPanel center,south;  
    private FlowLayout flow;  
    private ArrayList array;  
    private Color color;  
    private StyledDocument doc;  
    private Style style, fontSize;  



    public Form()  
    {  
        textPane = new JTextPane();  
        textPane.setMinimumSize(new Dimension(100,100));  

        doc = textPane.getStyledDocument();  
        doc.addDocumentListener(new TextActions());  


        results = new JLabel("Number of letters: ");  

        array = new ArrayList();   
        array.add("public");
        array.add("static");
        array.add("void");
        array.add("private");
        array.add("protected");

        color = new Color(185,224,247);  

        //Adding styles  
        style = doc.addStyle("blue", null);    
        StyleConstants.setForeground(style, color);    


         fontSize = doc.addStyle("fontSize", null);
         StyleConstants.setFontSize(fontSize, 25);


         //Setting the font Size
         doc.setCharacterAttributes(0, doc.getLength(), fontSize, false);

        center = new JPanel();  
        flow = new FlowLayout();  

        center.setLayout(flow);  
        center.add(textPane);  

        south = new JPanel();  
        south.setLayout(new FlowLayout());  
        south.add(results);  

        getContentPane().add(textPane,"Center");  
        getContentPane().add(south,"South");  



    }  

    private class TextActions implements DocumentListener   
    {  
        @Override  
        public void insertUpdate(DocumentEvent e)   
        {  
            try {  
                highlighat();  
            } catch (BadLocationException ex) {  
               ex.printStackTrace();  
            } 
        }  

        @Override  
        public void removeUpdate(DocumentEvent e)  
        {  
            try {  
                highlighat();  
            } catch (BadLocationException ex) {  
               ex.printStackTrace();  
            }  
        }  

        @Override  
        public void changedUpdate(DocumentEvent e)  
        {  

        }  

    }  

      private void highlighat()  throws BadLocationException  
     {    

        EventQueue.invokeLater(new Runnable()    
        {    
            public void run()    
            {    
                String text = "";  
                String content = null;  
                try {  
                    content = doc.getText(0, doc.getLength()).toLowerCase();  
                } catch (BadLocationException ex) {  
                    ex.printStackTrace();  
                }  
            int last=0;  

            for(int i=0;i<array.size();i++)  
            {  
               text = array.get(i).toString();  

               if(content.contains(text))  
               {  
                    while((last=content.indexOf(text,last))!=-1)  
                    {                     

                       int end = last+text.length();  

                       doc.setCharacterAttributes(last, end, textPane.getStyle("blue"), true);    

                       last++;  

                     }  

               }  
            }  
            }    
        }  
     );  
    }  

    public static void main(String[]args)  
    {  
        try  
        {  
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());  
        }  
        catch(Exception e)  
        {  

        }  
        Form f = new Form();  
        f.setVisible(true);  
        f.setSize(800,600);  

        f.validate();  
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
    }  
}  

In this case, I am also trying to set the font size to 25, but as you can see, it does not work. "textPane.setFont ()" also does not work. How to set the font size? Please, help..

+5
source share
2 answers

Of course, you can create a font object and use it to set the font of your text panel. Create it like this:

    Font f = new Font(Font.SANS_SERIF, 3, 5);
+7
source

Perhaps this code will help you, Highlighter and StyledDocument , the rest is described in the tutorial about JTextPane / EditorPane

+2
source

All Articles