interpretação de tags HTML em um JEditorPane

5 respostas
E

Eu gostaria de passar para um JTextPane um texto que contenha tags html que quando exibidas mostrassem o html já interpretado. lembrando que eu não quero especificar para o JTextPane um arquivo .htm, pois eu quero passar o texto em tempo de programação. por exemplo

quero passar o texto
JTextPane1.setText(" negrito ");

quero o seguinte resultado
negrito

5 Respostas

pcalcado

Procure na APi sobre o JEditorPane.

[]s

lordExorcist

Estava fuçando classes que resolvesse este seu problema… então montei a classe abaixo:


//HTMLEditorKits.java

import javax.swing.<em>;

import java.awt.</em>;

import java.awt.event.<em>;

import javax.swing.text.</em>;

import javax.swing.text.html.HTMLEditorKit;

import javax.swing.text.html.HTMLDocument;

import javax.swing.text.html.HTML;

import java.io.IOException;
public class HTMLEditorKits{

HTML html;

HTMLDocument htmlDoc;

HTMLEditorKit htmlEdKit;

JEditorPane edPane;

JFrame frame;
public HTMLEditorKits(){
	htmlEdKit = new HTMLEditorKit();
	htmlDoc = (HTMLDocument) htmlEdKit.createDefaultDocument();
	html = new HTML();
	
	try{
		htmlEdKit.insertHTML(htmlDoc,0,montarString(),0,0,html.getTag("html"));
	}
	catch(IOException ioe){
		JOptionPane.showMessageDialog(null,"Exception: ioe");
	}
	catch(BadLocationException ble){
		JOptionPane.showMessageDialog(null,"Exception: ble");
	};
	
	edPane = new JEditorPane();
	edPane.setBorder(BorderFactory.createLineBorder(Color.yellow));
	edPane.setContentType("text/html");
	edPane.setEditable(false);
	edPane.setEditorKit(htmlEdKit);
	edPane.setDocument(htmlDoc);
	htmlEdKit.install(edPane);
	
	frame = new JFrame("HTMLEditorKits:");
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.getContentPane().setLayout(new GridLayout(1,1));
	frame.getContentPane().add(new JScrollPane(edPane));
	frame.setSize(800,570);
	frame.setLocation(0,0);
	frame.show();
}

private String montarString(){
	String htmlCode = "&lt;html&gt;&lt;body bgcolor = \"green\"&gt;&lt;center&gt;";
	
	for(int i=0;i<20;i++){
		htmlCode += "&lt;tr&gt;";
		
		for(int j=1;j<=10;j++){
			htmlCode += "&lt;td&gt;" + j + "&lt;/td&gt;";
		};
		
		htmlCode += "&lt;/tr&gt;";
	};
	htmlCode += "&lt;/table&gt;&lt;/center&gt;&lt;/body&gt;&lt;/html&gt;";
	
	return htmlCode;
}

public static void main(String args[]){
	new HTMLEditorKits();
}

}

Estude os objetos dessa classe na API! Qualquer coisa “tamos” aqui…! :smiley:

eduardo_rod_s

A resposta é:

public JEditorPane testeHtml (String mensagem)

{

JEditorPane teste=new JEditorPane();

teste.setContentType(text/html);

teste.setText(message);

return teste;

}

Você deve passar a string da seguinte maneira:
"negrito

O resultado vai ser o esperado.

Wolf_X

eu to com um problema parecido, to precisando inserir imagens no meio do texto, eu gerei um metodo que faz um replace procurando o simbolo q se transformará na imagem e alterando-o para uma tag html

acontece q no JEditorPane qdo eu insiro o :smiley: em vez de aparecer a imagem aparece o path :frowning:

file= …

oque eu estou fazendo de errado, ou o JEdtiorPane nao consegue carregar imagens de arquivos?
obrigado :smiley:

Tacioandrade

Pessoal, estou começando a criar um compilador para a disciplina de mesmo nome e estou começando a criar logo a interface esses dias (na ultima semana antes de começarem as aulas).

Para este compilador eu gostaria de usar o JEditorPane de forma que ele já colocasse a palavra em negrito assim que fosse visto que ela é reservada (se tivesse como criar uma lista de preferência com estas palavras), elas fossem colocadas dinamicamentes em negrito.

Seria a mesma funcionalidade de reconhecimento de sintaxe usado por editores como Gedit e Notepad++ ou IDEs como o NetBeans.

Caso alguem possa me dar um caminho sobre o assunto, agradeceria.

Att. Tácio Andrade.

Criado 11 de novembro de 2004
Ultima resposta 7 de out. de 2011
Respostas 5
Participantes 6