java - que - establecer JTextPane en el tipo de contenido HTML y usar constructores de cadenas
para que sirve el jtextpane en netbeans (2)
Estoy usando constructores de cadenas para anexar texto a mi JTextPane, he configurado el tipo de contenido como pane.setContentType("text/html");
pero el texto sin texto aparece en mi JTextPane.
Este es un ejemplo de mi apéndice:
buildSomething.append("<b style=/"color:pink/">"+Birthday+"</span>");
¿Hay algo que estoy haciendo gravemente mal? ¿Y cómo hago para arreglarlo?
@Joop Eggen
1º. loop genera
buildSomething.append("<b style=/"color:pink/">" + myBirthday + "</span>");
2do. loop genera la misma salida, creo que no importa si está dentro de <html> ..<html>
o no porque hay pane.setContentType("text/html");
y (código no correcto que publiqué aquí <html> ..</html>
)
buildSomething1.append("<html><b style=/"color:pink/">"
+ myBirthday + "</span></html>");
import java.awt.*;
import javax.swing.*;
public class MyTextPane implements Runnable {
private JFrame frm;
private JScrollPane jsp;
private JTextPane jta;
private StringBuilder buildSomething = new StringBuilder();
private StringBuilder buildSomething1 = new StringBuilder();
final String myBirthday = "Birthday";
public MyTextPane() {
for (int i = 0; i < 10; i++) {
buildSomething.append("<b style=/"color:pink/">" + myBirthday + "</span>");
buildSomething1.append("<html><b style=/"color:pink/">" + myBirthday + "</span><html>");
}
jta = new JTextPane();
jta.setContentType("text/html");
jta.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
jta.setText(myBirthday);
jsp = new JScrollPane(jta);
jsp.setPreferredSize(new Dimension(250, 450));
frm = new JFrame("awesome");
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frm.setLayout(new BorderLayout());
frm.add(jsp, BorderLayout.CENTER);
frm.setLocation(100, 100);
frm.pack();
frm.setVisible(true);
new Thread(this).start();
}
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
jta.setText(buildSomething.toString());
}
});
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
jta.setText(buildSomething1.toString());
}
});
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
MyTextPane fs = new MyTextPane();
}
});
}
}
Cada vez que se JTextPane.setText(...)
se determina un nuevo tipo de contenido. Comience el texto con "<html>"
y obtendrá HTML.
Se crea un nuevo documento, en su caso HTMLDocument.
@mKorbel: lo siguiente crea cada vez HTML para JTextPane.
buildSomething.append("<html>");
buildSomething1.append("<html>");
for (int i = 0; i < 10; i++) {
buildSomething.append("<span style=/"color:red/">" + myBirthday + "</span>");
buildSomething1.append("<b style=/"color:blue/">" + myBirthday + "</b>");
}