2012-05-14 29 views
5

hãy có một cái nhìn tại các mã sauJTextPane: Làm thế nào để thiết lập kích thước phông chữ

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

Trong đó, tôi cũng đang cố gắng để thiết lập kích thước font chữ đến 25, nhưng như bạn thấy, nó không phải là đang làm việc. "textPane.setFont()" cũng không hoạt động. Làm cách nào tôi có thể đặt kích thước phông chữ chính xác? Xin vui lòng giúp ..

+0

'textPane.setFont (new Font ("Arial", Font.BOLD, 22); 'không làm việc – nullpotent

+0

Tất nhiên, bạn có thể kiểm tra nó, nó không làm việc? –

Trả lời

7

Chắc chắn, bạn có thể tạo một đối tượng phông chữ và sử dụng nó để thiết lập font của cửa sổ văn bản của bạn. Nhanh chóng nó như thế này:

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

Wow! Có thể nói rằng là làm việc và tuyệt vời! Cảm ơn rất nhiều! –

+2

Vì vậy, làm thế nào đến đề xuất của tôi – nullpotent

+0

font của bạn đã được đưa ra 2 chuỗi và một số.Các nhà xây dựng font cần chỉ có một loại chuỗi và một số.Tôi không chắc chắn làm thế nào để làm cho một cái gì đó đậm với một phông chữ cụ thể, có thể bạn có thể áp dụng 2 phông chữ – loveToCode

Các vấn đề liên quan