Pessoal boa noite...
Estou tentando fazer um gráfico igual a este :
http://www.primefaces.org/showcase-labs/ui/dynamicImage.jsf
Mas não aparece o gráfico, alguém usa outra coisa para fazer gráfico alem do Prime ?
segue meu codigo:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Utils;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import javax.imageio.ImageIO;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
public class DynamicImageController {
private StreamedContent graphicText;
private StreamedContent barcode;
private StreamedContent chart;
public DynamicImageController() {
try {
//Graphic Text
BufferedImage bufferedImg = new BufferedImage(100, 25, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bufferedImg.createGraphics();
g2.drawString("This is a text", 0, 10);
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(bufferedImg, "png", os);
graphicText = new DefaultStreamedContent(new ByteArrayInputStream(os.toByteArray()), "image/png");
//Chart
JFreeChart jfreechart = ChartFactory.createPieChart("Turkish Cities", createDataset(), true, true, false);
File chartFile = new File("dynamichart");
ChartUtilities.saveChartAsPNG(chartFile, jfreechart, 375, 300);
chart = new DefaultStreamedContent(new FileInputStream(chartFile), "image/png");
//Barcode
File barcodeFile = new File("dynamicbarcode");
// BarcodeImageHandler.saveJPEG(BarcodeFactory.createCode128("PRIMEFACES"), barcodeFile);
barcode = new DefaultStreamedContent(new FileInputStream(barcodeFile), "image/jpeg");
} catch (Exception e) {
}
}
public StreamedContent getBarcode() {
return barcode;
}
public StreamedContent getGraphicText() {
return graphicText;
}
public StreamedContent getChart() {
return chart;
}
private PieDataset createDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Istanbul", new Double(45.0));
dataset.setValue("Ankara", new Double(15.0));
dataset.setValue("Izmir", new Double(25.2));
dataset.setValue("Antalya", new Double(14.8));
return dataset;
}
}
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Utils;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import javax.imageio.ImageIO;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;
import org.primefaces.model.DefaultStreamedContent;
import org.primefaces.model.StreamedContent;
public class DynamicImageController {
private StreamedContent graphicText;
private StreamedContent barcode;
private StreamedContent chart;
public DynamicImageController() {
try {
//Graphic Text
BufferedImage bufferedImg = new BufferedImage(100, 25, BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = bufferedImg.createGraphics();
g2.drawString("This is a text", 0, 10);
ByteArrayOutputStream os = new ByteArrayOutputStream();
ImageIO.write(bufferedImg, "png", os);
graphicText = new DefaultStreamedContent(new ByteArrayInputStream(os.toByteArray()), "image/png");
//Chart
JFreeChart jfreechart = ChartFactory.createPieChart("Turkish Cities", createDataset(), true, true, false);
File chartFile = new File("dynamichart");
ChartUtilities.saveChartAsPNG(chartFile, jfreechart, 375, 300);
chart = new DefaultStreamedContent(new FileInputStream(chartFile), "image/png");
//Barcode
File barcodeFile = new File("dynamicbarcode");
// BarcodeImageHandler.saveJPEG(BarcodeFactory.createCode128("PRIMEFACES"), barcodeFile);
barcode = new DefaultStreamedContent(new FileInputStream(barcodeFile), "image/jpeg");
} catch (Exception e) {
}
}
public StreamedContent getBarcode() {
return barcode;
}
public StreamedContent getGraphicText() {
return graphicText;
}
public StreamedContent getChart() {
return chart;
}
private PieDataset createDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("Istanbul", new Double(45.0));
dataset.setValue("Ankara", new Double(15.0));
dataset.setValue("Izmir", new Double(25.2));
dataset.setValue("Antalya", new Double(14.8));
return dataset;
}
}
xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Gerenciador de Livros</title>
<link type="text/css" rel="stylesheet" href="dot-luv/skin.css"/>
</h:head>
<h:body>
<p:layout fullPage="true">
<p:layoutUnit position="left" width="200" header="Atividades" resizable="true" closable="true" collapsible="true">
<h:form prependId="false">
<p:commandLink value="Novo Livro" actionListener="#{livroController.prepararAdicionarLivro}" update="infosLivro" oncomplete="dialogGerLivro.show()"/>
</h:form>
</p:layoutUnit>
<p:layoutUnit position="center">
<h1>Gerenciador de Livros</h1>
<br/>
<h:form prependId="false">
<h3>JFreeChart on-the-fly</h3>
<p:graphicImage value="#{dynamicImageController.chart}" />
<h3>Barcode on-the-fly</h3>
<p:graphicImage value="#{dynamicImageController.barcode}" />
<h3>GraphicText on-the-fly</h3>
<p:graphicImage value="#{dynamicImageController.graphicText}" />
<p:dataTable id="tabela" var="livro" value="#{livroController.listarLivros}">
<p:column>
<f:facet name="header">
<h:outputText value="Título"/>
</f:facet>
<h:outputText value="#{livro.titulo}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Autor"/>
</f:facet>
<h:outputText value="#{livro.autor}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Páginas"/>
</f:facet>
<h:outputText value="#{livro.paginas}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Editora"/>
</f:facet>
<h:outputText value="#{livro.editora}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Isbn"/>
</f:facet>
<h:outputText value="#{livro.isbn}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Avaliação"/>
</f:facet>
<h:outputText value="#{livro.avaliacao}"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Alterar"/>
</f:facet>
<p:commandButton actionListener="#{livroController.prepararAlterarLivro}" value="Alterar" update="infosLivro" oncomplete="dialogGerLivro.show()"/>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Excluir"/>
</f:facet>
<h:commandLink action="#{livroController.excluirLivro}" value="Excluir"/>
</p:column>
</p:dataTable>
</h:form>
</p:layoutUnit>
</p:layout>
<p:dialog header="Gerencia de Livro" widgetVar="dialogGerLivro" resizable="false" modal="true" showEffect="slide" width="500">
<h:form prependId="false">
<h:panelGrid id="infosLivro" columns="2" style="margin-bottom:10px">
<h:outputLabel for="titulo" value="Título:" />
<h:inputText id="titulo" value="#{livroController.livro.titulo}"/>
<h:outputLabel for="autor" value="Autor:" />
<h:inputText id="autor" value="#{livroController.livro.autor}"/>
<h:outputLabel for="paginas" value="Páginas:" />
<h:inputText id="paginas" value="#{livroController.livro.paginas}"/>
<h:outputLabel for="editora" value="Editora:" />
<h:inputText id="editora" value="#{livroController.livro.editora}"/>
<h:outputLabel for="isbn" value="ISBN:" />
<h:inputText id="isbn" value="#{livroController.livro.isbn}"/>
<h:outputLabel for="avaliacao" value="Avaliação:" />
<h:selectOneMenu id="avaliacao" value="#{livroController.livro.avaliacao}">
<f:selectItem itemLabel="1" itemValue="1"/>
<f:selectItem itemLabel="2" itemValue="2"/>
<f:selectItem itemLabel="3" itemValue="3"/>
<f:selectItem itemLabel="4" itemValue="4"/>
<f:selectItem itemLabel="5" itemValue="5"/>
</h:selectOneMenu>
<p:commandButton update="tabela" oncomplete="dialogGerLivro.hide();" actionListener="#{livroController.adicionarLivro}" value="Inserir Livro"/>
<p:commandButton update="tabela" oncomplete="dialogGerLivro.hide();" actionListener="#{livroController.alterarLivro}" value="Alterar Livro"/>
</h:panelGrid>
</h:form>
</p:dialog>
</h:body>
</html>