2012-05-14 17 views
5

Bitte setzen Sie folgenden Code einen BlickJTextPane: Wie die Schriftgröße

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

Dort bin ich auch verwendet, um die Schriftgröße auf 25, aber wie Sie können versuchen, sehen, ist es nicht Arbeiten. "textPane.setFont()" hat auch nicht funktioniert. Wie kann ich die Schriftgröße richtig einstellen? Bitte helfen ..

+0

'textPane.setFont (neue Schriftart ("Arial", Font.BOLD, 22);' funktionierte nicht – nullpotent

+0

Natürlich können Sie es testen, ist es nicht funktioniert? –

Antwort

7

Sicher, können Sie eine Schriftart-Objekt erstellen und es verwenden, die Schriftart Ihres Textbereich einzustellen. Instantiate es wie folgt aus:

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

Wow! Ich muss sagen, dass funktioniert und erstaunlich! Vielen Dank! –

+2

Also, wie kommt mein Vorschlag hat nicht funktioniert? – nullpotent

+0

Ihre Schriftart wurde 2 Zeichenfolgen und eine Nummer. Der Zeichensatzkonstruktor benötigt nur einen String-Typ und eine Zahl. Ich bin mir nicht sicher, wie man etwas fett mit einer bestimmten Schriftart, vielleicht können Sie 2 Schriftarten – loveToCode