Cómo usar JTextPane con fuentes y tamaños diferentes

Iniciado por JenselG, 23 Septiembre 2018, 02:48 AM

0 Miembros y 1 Visitante están viendo este tema.

JenselG

Hola a todos, mi problema es que estoy creando una ventana de ayuda y necesito mostrar la ayuda con tamaños y fuentes diferentes en un JTextPane. Hasta ahora no he encontrado ayuda que me acerque a mi objetivo.

¿Cómo puedo hacerlo? ¿Podrian darme una estructura o un ejemplo? Gracias,

rub'n

#1
Cita de: JenselG en 23 Septiembre 2018, 02:48 AM
Hasta ahora no he encontrado ayuda que me acerque a mi objetivo

Para la próxima en lo posible coloca código hecho >:D


https://docs.oracle.com/javase/tutorial/uiswing/components/editorpane.html

https://docs.oracle.com/javase/tutorial/displayCode.html?code=https://docs.oracle.com/javase/tutorial/uiswing/examples/components/TextSamplerDemoProject/src/components/TextSamplerDemo.java

Código (java) [Seleccionar]

import javax.swing.*;
import javax.swing.text.*;
import java.awt.*;

public class TestForo  extends JPanel {

   private static final String newline = "\n";

   public TestForo() {
       setLayout(new BorderLayout());
       setPreferredSize(new Dimension(400,300));
       JScrollPane scrollPane = new JScrollPane(createTextPane());
       scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
       scrollPane.setPreferredSize(new Dimension(10,10));
       scrollPane.setMinimumSize(new Dimension(10 , 10));

       add(scrollPane);

   }

   private JTextPane createTextPane() {
       String[] initString =
               { "JenselGe hola soy java, espero que ejecutes esto XD, ", //regular
                       "another ",                                   //italic
                       "styled ",                                    //bold
                       "text ",                                      //small
                       "component, ",                                //large
                       "which supports embedded components..." + newline,//regular
                       "y no pondre lloronas XD " + newline,          //button
                       "...and embedded icons..." + newline,         //regular

                       newline + "JTextPane is a subclass of JEditorPane that " +
                               "uses a StyledEditorKit and StyledDocument, and provides " +
                               "cover methods for interacting with those objects."
               };

       String[] initStyles = { "regular", "italic", "bold", "small", "large", "regular", "regular","regular","bold"};

       JTextPane textPane = new JTextPane();
       StyledDocument doc = textPane.getStyledDocument();
       addStylesToDocument(doc);

       try {
           for (int i=0; i < initString.length; i++) {
               doc.insertString(doc.getLength(), initString[i], doc.getStyle(initStyles[i]));
           }
       } catch (BadLocationException ble) {
           System.err.println("Couldn't insert initial text into text pane.");
       }

       return textPane;
   }

   protected void addStylesToDocument(StyledDocument doc) {
       //Initialize some styles.
       Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);

       Style regular = doc.addStyle("regular", def);
       StyleConstants.setFontFamily(def, Font.SANS_SERIF);

       Style s = doc.addStyle("italic", regular);
       StyleConstants.setItalic(s, true);

       s = doc.addStyle("bold", regular);
       StyleConstants.setBold(s, true);

       s = doc.addStyle("small", regular);
       StyleConstants.setFontSize(s, 10);

       s = doc.addStyle("large", regular);
       StyleConstants.setFontSize(s, 16);

       s = doc.addStyle("bold" , regular);
       StyleConstants.setFontSize(s , 19);


   }

   public static void main(String ...agrea ) {
       new Thread(() -> {
          JFrame jFrame = new JFrame("TextEditable Ejemplo");
          jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          jFrame.add(new TestForo());
          jFrame.pack();
          jFrame.setLocationRelativeTo(null);
          jFrame.setVisible(true);
       }).start();
   }
}





rubn0x52.com KNOWLEDGE  SHOULD BE FREE!!!
If you don't have time to read, you don't have the time (or the tools) to write, Simple as that. Stephen