JTextPane: How to set the font size

24,005

Solution 1

Sure, you can create a font object and use it to set the font of your text pane. Instantiate it like this:

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

Solution 2

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

Share:
24,005
PeakGen
Author by

PeakGen

CTO

Updated on January 14, 2020

Comments

  • PeakGen
    PeakGen over 4 years

    Please have a look at 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 there, I am also trying to set the font size to 25, but as you can see, it is not working. "textPane.setFont()" also didn't work. How can I set the font size correctly? Please help..