Como criar Gráfico em Pizza!

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)

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

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

:smiley: Obrigadaum …

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

Valewsss 8)

Daniel Destro … :lol:

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

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:

LIPE.

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

<%@page session=“true” %>
<%@page import=“teste.PieChart” %>
<%@page import=“javax.imageio.ImageIO” %>
<%@page import=“java.awt.Color” %>
<%@page 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:

<%@page session=“true” %>
<%@page import=“teste.PieChart” %>
<%@page import=“javax.imageio.ImageIO” %>
<%@page import=“java.awt.Color” %>
<%@page 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:

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=&quot;suaServlet&quot; /&gt;

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

Qlqr coisa, falae

[]´s

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;&quot;image/png&quot;&#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;, &quot;png&quot;, 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=&quot;true&quot; %&gt;

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

&lt;br&gt; André &lt;br&gt;
&lt;img scr=&quot;/servlet/grafico_teste&quot; /&gt;
&lt;br&gt;
&lt;jsp&#58;include page=&quot;rodape.jsp&quot; flush=&quot;true&quot; /&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:

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

Obrigadúúu … :smiley:

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