JTextPane: как установить размер шрифта

Пожалуйста, взгляните на следующий код

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

Там я также пытаюсь установить размер шрифта 25, но, как вы видите, он не работает. "textPane.setFont ()" также не работает. Как правильно установить размер шрифта? Пожалуйста помоги.

 PeakGen14 мая 2012 г., 17:30
Конечно, вы можете проверить это, оно не работает.
 nullpotent14 мая 2012 г., 17:08
textPane.setFont(new Font("Arial", Font.BOLD, 22); не сработало?

Ответы на вопрос(2)

Решение Вопроса

вы можете создать объект шрифта и использовать его для установки шрифта вашей текстовой панели. Создайте это так:

    Font f = new Font(Font.SANS_SERIF, 3, 5);
 loveToCode14 мая 2012 г., 20:35
рифт @your получил 2 строки и число. Для конструктора шрифта требуется только один тип строки и число. Я не уверен, как сделать что-то жирное с определенным шрифтом, может быть, вы можете применить 2 шрифта
 techdude04 сент. 2014 г., 04:38
@ loveToCode, я бы порекомендовал использовать константы вместо жестко закодированных целых. новый шрифт (Font.SANS_SERIF, Font.BOLD, 25); // Жирный новый шрифт (Font.SANS_SERIF, Font.ITALIC, 25); // Курсив новый шрифт (Font.SANS_SERIF, Font.PLAIN, 25); // Простая ссылка: Docs.oracle.com / JavaSE / 7 / документы / API / Java / AWT / Font.html Чтобы сделать это с определенным шрифтом, вы можете использовать GraphicsEnvironment.getLocalGraphicsEnvironment (). GetAllFonts (); чтобы получить все шрифты, если вы хотите, чтобы пользователь выбрал их, или вы можете создать такой, как этот: Font mediumFont = new Font ("Yu Mincho Regular", Font.BOLD, 30);
 PeakGen14 мая 2012 г., 19:10
Вау! Должен сказать, что это работает и удивительно! Большое спасибо
 nullpotent14 мая 2012 г., 20:24
Так почему же мое предложение не сработало?

Highlighter and StyledDocument, отдых описан в учебнике оJTextPane / EditorPane

 trashgod14 мая 2012 г., 18:33
Смотрите также этоStyledDocument приме.

Ваш ответ на вопрос