Como criar Gráfico em Pizza!

11 respostas
A

Bom dia Galera … :smiley:

Preciso criar um Gráfico em Pizza com os dados de uma "Select … ".

Alguém poderia, por favor, me dar uma dica de como fazer ???

Acho que vale dizer que estou mexendo com jsp / sevlet.

Eu ja tive que fazer um grafico em Barras, daí como eu não sabia usar nenhum pacote para esse fim, eu fiz o gráfico em html. :lol:

Desde já … Agradeço … 8)

11 Respostas

R

Andre, de uma olhada no pacote JFreeChart…

ele gera graficos mto bons, permite exportar p/ JPEG e eh bem simples de usar…vem com uns exemplos p/ vc entender…

qq coisa, soh gritar…

falow

D

Aqui no GUJ mesmo tem um artigo sobre como criar imagens (gráficos) com a API do Java.

A

:smiley: Obrigadaum …

Vou dar uma estudada qq eu grito e quando eu conseguir, falo como ficou … … rs :lol:

Valewsss 8)

A

Daniel Destro … :lol:

O Artigo que vc se refere é o “Criando Imagens com Java” sob o tópico “AWT e Swing” do menu “Atrigos” :?:

A

Bom dia Galera !!!

Tentei gerar a imagem em pizza como o rbarioni e o danieldestro me deram a dica, entaum eu me baziei no Artigo do Guj mesmo.
ou seja, existe a classe PieChart que gera a imagem.

:arrow: Para mostra-la em um sistema desktop, colocaria como no artigo.

int[] valores = { 20, 10, 60, 90, 180 };

PieChart pie = new PieChart( valores, 200, 200, Color.WHITE );

JLabel lbl = new JLabel( pie.getImageIcon( ) );

:arrow: Como que eu faço para que a imagem gerada com o PieChart, seja exibida em um pagina.jsp :?:

Tentei dessa forma:

int[] valores = { 20, 10, 60, 90, 90, 90 };

PieChart pie = new PieChart( valores, 200, 200, Color.WHITE );

response.setContentType(image/png);

OutputStream os = response.getOutputStream();

ImageIO.write(pie.getBufferedImage(), png, os);

os.close();

Mas gera exception na linha
OutputStream os = response.getOutputStream();

Alguém pode me ajudar … :oops:

Abrigado. !! :smiley:

_

Postaa exceção né rapaz? :smiley:

A

LIPE.

Fiz um teste da seguinte maneira.
Criei um temp.jsp com o código:

<%<a class="mention" href="/u/page">@page</a> session=“true” %>

<%<a class="mention" href="/u/page">@page</a> import=“teste.PieChart” %>

<%<a class="mention" href="/u/page">@page</a> import=“javax.imageio.ImageIO” %>

<%<a class="mention" href="/u/page">@page</a> import=“java.awt.Color” %>

<%<a class="mention" href="/u/page">@page</a> import=“java.io.OutputStream” %>

<%

int[] valores = { 20, 10, 60, 90, 90, 90 };

PieChart pie = new PieChart( valores, 200, 200, Color.WHITE );

response.setContentType(image/png);

OutputStream os = response.getOutputStream();

ImageIO.write(pie.getBufferedImage(), png, os);

os.close();

%>

:arrow: Dessa maneira acima funciona, aparece a imagem no browser.

:arrow: Porém se eu colocar meus includes:

<%<a class="mention" href="/u/page">@page</a> session=“true” %>

<%<a class="mention" href="/u/page">@page</a> import=“teste.PieChart” %>

<%<a class="mention" href="/u/page">@page</a> import=“javax.imageio.ImageIO” %>

<%<a class="mention" href="/u/page">@page</a> import=“java.awt.Color” %>

<%<a class="mention" href="/u/page">@page</a> import=“java.io.OutputStream” %>

<jsp:include page=“cabecalho.jsp” flush=“true” />

<%

int[] valores = { 20, 10, 60, 90, 90, 90 };

PieChart pie = new PieChart( valores, 200, 200, Color.WHITE );

response.setContentType(image/png);

OutputStream os = response.getOutputStream();

ImageIO.write(pie.getBufferedImage(), png, os);

os.close();

%>

<jsp:include page=“rodape.jsp” flush=“true” />

:arrow: Gera a seguinte exeção.

2004-07-13 10:06:10 StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception

java.lang.IllegalStateException: getWriter() has already been called for this response

at org.apache.catalina.connector.ResponseBase.getOutputStream(ResponseBase.java:716)

at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:150)

at javax.servlet.ServletResponseWrapper.getOutputStream(ServletResponseWrapper.java:136)

at org.apache.jsp.temp$jsp._jspService(temp$jsp.java:114)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.netbeans.modules.tomcat.tomcat40.runtime.IDEJspServlet$JspServletWrapper.service(IDEJspServlet.java:173)

at org.netbeans.modules.tomcat.tomcat40.runtime.IDEJspServlet.serviceJspFile(IDEJspServlet.java:246)

at org.netbeans.modules.tomcat.tomcat40.runtime.IDEJspServlet.service(IDEJspServlet.java:339)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:226)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:213)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.netbeans.modules.web.monitor.catalina.MonitorValve.invoke(MonitorValve.java:148)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:468)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)

at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)

at java.lang.Thread.run(Thread.java:534)

Desculpe pelo tamanho do texto. :lol:

V

Humm…
Você não pode setar o contenttype depois de mandar alguma coisa pro browser, pq essa informação vai no cabeçalho http

E o que você tentou fazer não vai funcionar, pq se você quer que sua servlet retorne somente a imagem então você vai ter que criar uma outra que chame assim:

&lt;img src="suaServlet" /&gt;

Dentro da “suaServlet”, aí sim, você coloca somente o esquema pra retornar a imagem pelo o OutPutStream

Qlqr coisa, falae

[]´s

A

Vegetto / Galera.

:arrow: Seguindo sua dica, criei a seguinte Servlet “grafico_teste”

protected void processRequest&#40;HttpServletRequest request, HttpServletResponse response&#41;
    throws ServletException, IOException &#123;

        response.setContentType&#40;"image/png"&#41;;         

        int&#91;&#93; valores = &#123; 20, 10, 60, 90, 90, 90 &#125;; 
        PieChart pie = new PieChart&#40; valores, 200, 200, Color.WHITE &#41;; 

        OutputStream os = response.getOutputStream&#40;&#41;; 

        ImageIO.write&#40;pie.getBufferedImage&#40;&#41;, "png", os&#41;; 

        os.close&#40;&#41;;

    &#125;

:arrow: Dai criei um jsp cujo eu quero que apareça a imagem Pizza. “temp.jsp”

&lt;%@page session="true" %&gt;

&lt;jsp&#58;include page="cabecalho.jsp" flush="true" /&gt;

&lt;br&gt; André &lt;br&gt;
&lt;img scr="/servlet/grafico_teste" /&gt;
&lt;br&gt;
&lt;jsp&#58;include page="rodape.jsp" flush="true" /&gt;

:arrow: Se eu executar a url colocando o /servlet/grafico_teste , a imagem aparece sem dar erro algum.
:arrow: Executando o temp.jsp que eu quero que apareça a imagem, não aparece.

:?: O que eu fiz de errado ?? :?: :lol:

Agradeço a ajuda de Todos … 8)
Abraços …

Ps. Demorei para responder esse Post, por que eu estava aprendendo a Criar a imagem lá no Servlet … rs. rs. :oops:

A

Essa discução segue no post
( http://www.guj.com.br/forum/viewtopic.php?p=73176 )

Obrigadúúu … :smiley:

A

Você definiu a servlet no web.xml ?
Se sim, como está?
Se não, não vai funcionar…

Criado 12 de julho de 2004
Ultima resposta 16 de jul. de 2004
Respostas 11
Participantes 6