En un artículo de la respuesta a una pregunta «Cómo añadir una cadena a un JEditorPane?» es algo así como

jep.setText(jep.getText + "new string");

He intentado esto:

jep.setText("<b>Termination time : </b>" + 
                        CriterionFunction.estimateIndividual_top(individual) + " </br>");
jep.setText(jep.getText() + "Processes' distribution: </br>");

Y como resultado obtuve «hora de Finalización : 1000» sin «de los Procesos de distribución:»

¿Por qué ocurre esto???

InformationsquelleAutor Dmitry | 2010-10-30

3 Comentarios

  1. 64

    Me cabe duda de que es el enfoque recomendado para anexar texto. Esto significa que cada vez que cambia algún texto que usted necesita para reanálisis de todo el documento. La razón por la que la gente puede hacer esto es porque el no entiende cómo utilizar un JEditorPane. Eso me incluye a mí.

    Me gusta mucho más el uso de un JTextPane y, a continuación, mediante el uso de atributos. Un ejemplo sencillo podría ser algo como:

    JTextPane textPane = new JTextPane();
    textPane.setText( "original text" );
    StyledDocument doc = textPane.getStyledDocument();
    
    // Define a keyword attribute
    
    SimpleAttributeSet keyWord = new SimpleAttributeSet();
    StyleConstants.setForeground(keyWord, Color.RED);
    StyleConstants.setBackground(keyWord, Color.YELLOW);
    StyleConstants.setBold(keyWord, true);
    
    // Add some text
    
    try
    {
        doc.insertString(0, "Start of text\n", null );
        doc.insertString(doc.getLength(), "\nEnd of text", keyWord );
    }
    catch(Exception e) { System.out.println(e); }
    • Gracias, voy a probar este.
    • Que funciona!!! Pero, ¿por qué setText + obtener el Texto no funciona?
    • Que recrear el Documento y perder todos los atributos personalizados agregado previamente.
    • La combinación de setText + getText para anexar es probablemente considerado como descuidado de programación. (Yo personalmente lo uso para pruebas simples.) Por ejemplo, si yo iba a mantener un archivo de registro con ese método, una nueva Cadena tendría que ser construida cada vez que un registro de entrada se anexa (que es una muy mala idea, dado que las Cadenas son inmutables.) Esto probablemente va a llevar finalmente a una notable huella en la memoria.
    • Buen ejemplo, pero no responde a la pregunta de agregar texto a un JEditorPane.
    • uno podría wana uso HTMLDocument en lugar de StyledDocument en el fin de mantener el HTML de formato, si se utiliza.

  2. 26

    Un JEditorPane, sólo como un JTextPane tiene un Document que puede utilizar para insertar cadenas.

    Lo que usted quiere hacer para añadir un texto en un JEditorPane es este fragmento de código:

    JEditorPane pane = new JEditorPane();
    /* ... Other stuff ... */
    public void append(String s) {
       try {
          Document doc = pane.getDocument();
          doc.insertString(doc.getLength(), s, null);
       } catch(BadLocationException exc) {
          exc.printStackTrace();
       }
    }

    He probado y ha funcionado muy bien para mí. El doc.getLength() es el lugar donde desea insertar la cadena, obviamente, con esta línea sería añadir al final del texto.

    • Gracias, funciona!!!
    • Pero, ¿por qué setText + obtener el Texto no funciona?
    • No puedo responder por cierto, no he jugado con JEditorPane, solo JTextPane en su mayoría. Me gustaría tener a jugar y de investigación antes de que yo pudiera responder.
    • Creo que el problema es simplemente que setText en realidad no causa el componente de actualización de sí mismo, por alguna razón que sólo funciona antes de que el componente se muestra.
    • Nunca he tenido problemas con ella antes, pero, de nuevo, cuando me escribió un emulador de consolas yo no dependen de setText me fui con la manipulación de documentos para el control.
    • En realidad setText(getText() + newText) obras, pero su uso está limitado a ningún estilo de texto. Para el estilo de texto es perder el estilo anterior, y lo normal es que no lo quiero. Además, he encontrado y enviado un error de JTextPane getText() hasta Java 9, así que no voy a confiar en él.

  3. 4

    setText es el conjunto de todos los textos en un textpane. El uso de la StyledDocument interfaz para añadir, quitar, y así en el texto.

    txtPane.getStyledDocument().insertString(
      offsetWhereYouWant, "text you want", attributesYouHope);
    • Gracias, Istao!

Dejar respuesta

Please enter your comment!
Please enter your name here