2012-05-14 122 views
5

favor, eche un vistazo al siguiente códigoJTextPane: Cómo modificar el tamaño de la fuente

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

Allí, también estoy tratando de establecer el tamaño de la fuente a 25, pero como se puede ver, no es trabajando. "textPane.setFont()" tampoco funcionó. ¿Cómo puedo establecer el tamaño de letra correctamente? Por favor, ayuda ..

+0

'textPane.setFont (nueva Fuente ("Arial", Font.BOLD, 22);' no funcionó – nullpotent

+0

Por supuesto, puede probarlo, que no está funcionando? –

Respuesta

7

Claro, se puede crear un objeto de fuente y utilizarla para establecer la fuente de su panel de texto. una instancia de esta manera:

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

¡Wow! ¡Tengo que decir que funciona y es sorprendente! ¡Muchas gracias! –

+2

Entonces, ¿cómo es que mi propuesta? no funcionó? – nullpotent

+0

su fuente recibió 2 cadenas y un número. El constructor de fuentes solo necesita un tipo de cadena y un número. No estoy seguro de cómo hacer algo en negrita con una fuente específica, tal vez puede aplicar 2 fuentes – loveToCode

Cuestiones relacionadas