Menampilkan Barchart dalam ZK
October 7, 2010 2 Comments
Hal yang paling dibutuhkan pada sebuah framework ajax adalah kemampuannya untuk menampilkan chart. Dalam ZK Framework hal ini dimungkinkan dengan menggunakan JFreechart. Pada contoh berikut saya mencoba membuat Barchart yang dihasilkan oleh JFreechart dan ditampilkan pada sebuah component Image dalam ZK.
Pada halaman .zul pastikan terdapat component Image sebagai tempat kita meletakan output chartnya.
<!--others component here--> <img id="chartImg" alt="" /> <!--others component here-->
Selanjutnya kita gunakan JFreechart untuk menghasilkan barchart sesuai dataset yang kita inginkan
//others code.. CategoryDataset dataset = CreateDateset.create(); ChartFactory.setChartTheme(StandardChartTheme.createLegacyTheme()); BarRenderer.setDefaultBarPainter(new StandardBarPainter()); if (cmbProgdi.getSelectedItem().getValue() == null) { chart = ChartFactory.createBarChart( "Jumlah Mahasiswa", // chart title "Program Studi", // domain axis label "Jumlah Mahasiswa", // range axis label dataset, // data PlotOrientation.HORIZONTAL, true, // include legend true, false); } else { chart = ChartFactory.createBarChart( "Jumlah Mahasiswa", // chart title "Program Studi", // domain axis label "Jumlah Mahasiswa", // range axis label dataset, // data PlotOrientation.VERTICAL, true, // include legend true, false); } chart.setBackgroundPaint(new Color(0xCC, 0xFF, 0xCC)); final CategoryPlot plot = chart.getCategoryPlot(); plot.setDomainAxisLocation(AxisLocation.BOTTOM_OR_LEFT); plot.setRangeAxisLocation(AxisLocation.TOP_OR_LEFT); plot.getRangeAxis().setStandardTickUnits(NumberAxis.createIntegerTickUnits()); //ngatur warna barchart final CategoryItemRenderer renderer1 = plot.getRenderer(); for (int x = 0; x <= 34; x++) { renderer1.setSeriesPaint(x, new WarnaBarChart().getColor(x)); } BarRenderer br = (BarRenderer) renderer1; br.setShadowVisible(false); BufferedImage bi = chart.createBufferedImage(900, 500, BufferedImage.TRANSLUCENT, null); if (cmbProgdi.getSelectedItem().getValue() == null) { bi = chart.createBufferedImage(900, 2000, BufferedImage.TRANSLUCENT, null); } byte[] bytes = EncoderUtil.encode(bi, ImageFormat.PNG, true); AImage image = new AImage("Bar Chart", bytes); chartImg.setContent(image); //other code..
Pada baris terakhir code di atas kita mengirimkan output dalam bentuk image yang dihasilkan oleh Jfreechart ke dalam component Image yang ada pada halaman ZK.
Recent Comments