2009-04-19 13 views

Respuesta

2

Echa un vistazo al siguiente código en este Pastebin:

http://pbin.oogly.co.uk/listings/viewlistingdetail/d6fe483a52c52aa951ca15762ed3d3

El ejemplo es de aquí:

http://www.java2s.com/Code/Java/Swing-JFC/JTextPaneStylesExample3.htm

Parece que usted puede cambiar el estilo utilizando la siguiente en un oyente de acción:

final Style boldStyle = sc.addStyle("MainStyle", defaultStyle); 
StyleConstants.setBold(boldStyle, true); 

doc.setCharacterAttributes(0, 10, boldStyle, true); 

Establece el estilo del texto entre el desplazamiento y la longitud dados a un estilo específico.

Consulte la pasta completa para obtener más información. Eso debería arreglar tu problema sin embargo.

+0

Acabo de visitar el enlace java2s y wow, muchos ejemplos. – extraneon

0

Recomiendo echar un vistazo a Java Tutorial de Sun sobre los paneles del editor.

3

Aquí hay un fragmento de código para insertar un "Hello World!" Formateado. cadena en un JEditorPane:

Document doc = yourEditorPane.getDocument(); 

StyleContext sc = new StyleContext(); 
Style style = sc.addStyle("yourStyle", null); 

Font font = new Font("Arial", Font.BOLD, 18); 

StyleConstants.setForeground(style, Color.RED); 
StyleConstants.setFontFamily(style, font.getFamily()); 
StyleConstants.setBold(style, true); 

doc.insertString(doc.getLength(), "Hello World!", style); 
+0

No sé por qué se votó negativamente porque es la respuesta más correcta aquí. –

0

Ok, wow. Pregunta difícil. Así que no he encontrado una manera de obtener el estilo de un personaje dado. Sin embargo, puede obtener MutableAttributeSet para un personaje dado y luego probar para ver si el estilo está en ese conjunto de atributos.

Style s; //your style 
    Element run = styledDocument.getCharacterElement( 
     textPane.getSelectionStart()); 
    MutableAttributeSet curAttr = 
     (MutableAttributeSet)run.getAttributes(); 
    boolean containsIt = curAttr.containsAttributes(s); 

Uno de los problemas con la obtención del estilo para una serie de caracteres es que puede haber más de un estilo aplicado a la gama (ejemplo: puede seleccionar texto en negrita es donde algunos y otros no lo es).

Para actualizar el texto seleccionado se puede:

Style s; //your style 
    JTextPane textPane; //your textpane 
    textPane.setCharacterAttributes(s, false); 

Ah, y parece que el getLogicalStyle función no funciona porque está devolviendo el estilo por defecto (o tal vez sólo el estilo) para el párrafo que contiene p, en lugar del estilo del personaje en p.

2

La manera más fácil de manipular paneles de texto es usando editor kits y su actions asociado. Puede encontrar una demostración de esto en las muestras JDK (en jdk \ demo \ jfc \ Stylepad).

Código de ejemplo que instala un StyledEditorKit y utiliza un FontSizeAction para manipular el texto:

public static void main(String[] args) { 
    // create a rich text pane 
    JTextPane textPane = new JTextPane(); 
    JScrollPane scrollPane = new JScrollPane(textPane, 
     JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, 
     JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
    // install the editor kit 
    StyledEditorKit editorKit = new StyledEditorKit(); 
    textPane.setEditorKit(editorKit); 
    // build the menu 
    JMenu fontMenu = new JMenu("Font Size"); 
    for (int i = 48; i >= 8; i -= 10) { 
     JMenuItem menuItem = new JMenuItem("" + i); 
     // add an action 
     menuItem 
      .addActionListener(new StyledEditorKit.FontSizeAction(
       "myaction-" + i, i)); 
     fontMenu.add(menuItem); 
    } 
    JMenuBar menuBar = new JMenuBar(); 
    menuBar.add(fontMenu); 
    // show in a frame 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setSize(600, 400); 
    frame.setJMenuBar(menuBar); 
    frame.setContentPane(scrollPane); 
    frame.setVisible(true); 
    } 

(Consejo:. Si desea utilizar un FontFamilyAction, echar un vistazo a GraphicsEnvironment.getAvailableFontFamilyNames() y logical font family names)

+0

Buen ejemplo, pero tengo una pregunta. ¿Cómo obtengo el texto con estilo y cómo puedo guardar este texto con estilo en una base de datos? – Krismorte

Cuestiones relacionadas