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
Comments
-
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..