JFrame com Html

18 respostas
E

Gente quero executar o meu html dentro de uma JFrame …tem como fazer isso !?

Tipo eu quero fazer tipo uma mini pagina web e exibila dentro de uma JFrame …

Agradeço a quem ajudar

18 Respostas

F

vc quer fazer um html… nao entendi direito vamos ver se entendi.

vc quer abrir uma pagina… ou so tipo mostrar um texto que vc fez no padrao html??

E

Mostrar um texto no padrao html

J

Use um JEditorPane.

JEditorPane pane = new JEditorPane();
pane.setContentType("text/html");
pane.setPage("http://www.portaljava.com.br");

Você tambem tem a opção de adicionar o codigo html diretamente, inves de uma URL:

String html = "<html>";
html += "<body>";
html += "<h1>Teste</h1>";
html += </body>";
html += "</html>";

pane.setText(html);

Ou ainda de um arquivo, usando o metodo read(), setDocument(), etc...

Dá uma olhada na documentação da API pra ter mais detalhes:

http://java.sun.com/javase/6/docs/api/javax/swing/JEditorPane.html

E

Não aplica a css pq no JEditorPane ?

J

O problema deve ser com o link do css, o css está em um arquivo externo (.css) ?

Se sim, tem algumas considerações a serem feitas.

E

O .css esta em arquivo extermo …quais sao essas considerações !?

Agradeço desde já se vc me ajudar .

J

Nesse caso você tem que colocar a tag <base> no HTML, ou usar o metodo setBase() da classe HTMLDocument.

JEditorPane pane = new JEditorPane&#40;&#41;;
pane.setContentType&#40;&quot;text/html&quot;&#41;;

URL base = new URL&#40;&quot;file&#58;///C&#58;/projeto/web/&quot;&#41;;

&#40;&#40;HTMLDocument&#41; pane.getDocument&#40;&#41;&#41;.setBase&#40;base&#41;;

pane.setText&#40;&quot;seu html&quot;&#41;;

Como eu disse, tambem pode ser colocado usando a tag <base> no html:

http://www.w3schools.com/tags/tag_base.asp

E

Qual a funcionalidade dessa tag base !?

Voce tem um exemplo !? :?: :?:

Desculpa por tanta ignorancia …

J

Ela especifica de onde serão carregados os arquivos que usam uma URL relativa, a URL no caso é relativa a essa “base”…

No link que te passei tem uma explicação melhor e um exemplo.

J

Ahhh, se você colocar a URL completa do css não precisa disso, só não é muito bom ter que colocar o caminho completo de todos os arquivos, css, imagens, etc…

E

Meu código não ta dificil de entender não......

public class JanelaMensagem extends JFrame &#123;

    private JEditorPane editorMensagem ;
    
    protected JLabel tempo ;
    
    private Container c = getContentPane&#40;&#41;;
    
    private URL url ;


    public JanelaMensagem&#40;&#41; throws IOException &#123;
        
        setTitle&#40;&quot; Mensagem do Dia &quot;&#41;;
        
        c.setLayout&#40;null&#41;;
        
        Border etched = BorderFactory.createEtchedBorder&#40;Color.blue, Color.black&#41;;
        
        Border border = BorderFactory.createTitledBorder&#40;etched,&quot;&quot;&#41;;
        
        tempo = new JLabel&#40;&quot;Tempo Estimado &#58; 02&#58;00&quot;&#41;;
        
        tempo.setForeground&#40; new Color&#40;0,73,147&#41;&#41;;

        tempo.setFont&#40; new Font&#40;Font.SANS_SERIF , Font.ITALIC , 15&#41; &#41;;
        
        tempo.setBounds&#40;70, -90 , 400, 400&#41;;
        
        editorMensagem = new JTextPane&#40;&#41;;

        editorMensagem.setEditable&#40;false&#41;;
        
        editorMensagem.setContentType&#40;&quot;text/html&quot;&#41;;
        
        url = new URL&#40;&quot;file&#58;/C&#58;/eclipse/workspace/Mensagem/bin/arquivo/mensagem.html&quot;&#41;;
        
        &#40;&#40;HTMLDocument&#41; editorMensagem.getDocument&#40;&#41;&#41;.setBase&#40;url&#41;;
        
        //editorMensagem.setPage&#40;url&#41;;
        
        editorMensagem.setText&#40;FormataHtml.getHtml&#40;&#41;.toString&#40;&#41;&#41;;
     
       	editorMensagem.setBounds&#40;5, 5, 735, 550&#41;;
       
		c.add&#40;tempo&#41;;
		
		c.add&#40;editorMensagem&#41;;
        
        setAlwaysOnTop&#40;true&#41;;
        setResizable&#40;false&#41;;
        setUndecorated&#40;true&#41;;
        setDefaultCloseOperation&#40;JFrame.DO_NOTHING_ON_CLOSE&#41;;
        
        setSize&#40;745,560&#41;;
        setLocationRelativeTo&#40;null&#41;;
        setVisible&#40;true&#41;;
        
    &#125;
	
&#125;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &lt;&quot;http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http&#58;//www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;/&gt;
&lt;link href=&quot;mensg.css&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;/&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;img src=&quot;top_mens.jpg&quot;/&gt;
&lt;/div&gt;
&lt;div align=&quot;center&quot;&gt;
&lt;textarea rows=&quot;10&quot; cols=&quot;30&quot; class=&quot;area&quot;&gt;&lt;/textarea&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
css
body &#123;
 
     font-family&#58; 			Verdana, Helvetica , Arial, sans-serif;
     
     font-size&#58; 			17px;
     
     font-style&#58;            italic;
     
     color&#58; 				black;
     
     
&#125;

.area &#123;

    border-width&#58;              3px;
  	border-style&#58;              solid;
  	border-color&#58;              blue;
   
     font-family&#58; 			Verdana, Helvetica , Arial, sans-serif;
     
     font-size&#58; 			17px;
     
     font-style&#58;            italic;
   
    color&#58;                     green;
	
&#125;

Só que mesmo eu setando o local da css nao ta cetando a css pro <textarea> !???? :sad:

Fiz de acordo com o que vc falou

J

Tenta alterar essa URL:

url = new URL&#40;"file&#58;///C&#58;/eclipse/workspace/Mensagem/bin/arquivo/"&#41;;

E o arquivo mensg.css tem que estar nesse diretorio aí.

E

O Arquivo esta nesse local sim :grin:

E

Funcionou com a URL que vc mandou mas nao setou a css no <textarea> :sad:

J

Nesse caso, acho que é porque a interpretação de CSS dele não é muito eficiente mesmo.

E

EU entrei em alguns sites e vi que o JEditoPane nao suporta css …vc pode me dar alguma idéia agora ?

J

Sim, ele suporta css, mas nada nele é muito sofisticado, por isso, não tente conseguir a mesma exibição de um browser que não vai funcionar.

O que você pode fazer é tentar encontrar algum outro componente de terceiros que consiga fazer isso, já vi algumas vezes uns componentes que conseguem usar o engine do IE ou Firefox dentro de um componente swing, mas não sei mais o nome deles, tente dar uma procurada aí…

E

Valeu pela ajufa Jairelton . Deus abençoe !!!

Criado 9 de janeiro de 2008
Ultima resposta 15 de jan. de 2008
Respostas 18
Participantes 3