Admin Admin
Jumlah posting : 2 Join date : 14.01.12
| Subyek: Membuat chart bar di java Fri Feb 03, 2012 8:34 am | |
| Dalam series Java Grafis kali ini, kita akan menunjukkan cara menggambar grafik bar sederhana di Java. Sebuah bar chart (grafik batang) adalah cara untuk membandingkan dua atau lebih nilai menggunakan bar persegi panjang dengan panjang. Bar bisa horizontal atau vertikal berorientasi. Kami menyediakan sebuah contoh yang menunjukkan grafik Bar di Java. Untuk menggambar bar chart, variabel MinValue, maxvalue tipe double didefinisikan. Lebar bar ditentukan oleh clientWidth / value.length. Kelas FontMetrics mendefinisikan objek huruf metrik yang merangkum informasi tentang rendering font tertentu pada layar tertentu. Kelas font merupakan font. Font “Book Antiqua ‘didefinisikan di konstruktor kelas Font. Para metode getAscent() menentukan pendakian font ,font dijelaskan oleh objek FontMetrics. Pendakian font adalah jarak dari dasar font itu ke bagian atas karakter alfanumerik.metode getDescent() menentukan keturunan font.metode getHeight() mendapatkan ketinggian standar baris teks di font. Berikut syntaxnya : - Code:
-
package DemoChartBar;
import java.awt.*; import javax.swing.*; import com.jtattoo.plaf.mcwin.McWinLookAndFeel; import java.awt.event.*; /* * @Anugrah Bagus Susilo */ public class SampleBarChart extends JPanel { private double[] value; private String[] languages; private String title;
public SampleBarChart(double[] val, String[] lang, String t) { languages = lang; value = val; title = t; } public void paintComponent(Graphics graphics) { super.paintComponent(graphics); if (value == null || value.length == 0) return; double minValue = 0; double maxValue = 0; for (int i = 0; i < value.length; i++) { if (minValue > value[i]) minValue = value[i]; if (maxValue < value[i]) maxValue = value[i]; } Dimension dim = getSize(); int clientWidth = dim.width; int clientHeight = dim.height; int barWidth = clientWidth / value.length; Font titleFont = new Font("Book Antiqua", Font.BOLD, 15); FontMetrics titleFontMetrics = graphics.getFontMetrics(titleFont); Font labelFont = new Font("Book Antiqua", Font.PLAIN, 10); FontMetrics labelFontMetrics = graphics.getFontMetrics(labelFont); int titleWidth = titleFontMetrics.stringWidth(title); int q = titleFontMetrics.getAscent(); int p = (clientWidth - titleWidth) / 2; graphics.setFont(titleFont); graphics.drawString(title, p, q); int top = titleFontMetrics.getHeight(); int bottom = labelFontMetrics.getHeight(); if (maxValue == minValue) return; double scale = (clientHeight - top - bottom) / (maxValue - minValue); q = clientHeight - labelFontMetrics.getDescent(); graphics.setFont(labelFont); for (int j = 0; j < value.length; j++) { int valueP = j * barWidth + 1; int valueQ = top; int height = (int) (value[j] * scale); if (value[j] >= 0) valueQ += (int) ((maxValue - value[j]) * scale); else { valueQ += (int) (maxValue * scale); height = -height; } graphics.setColor(Color.DARK_GRAY); graphics.fillRect(valueP, valueQ, barWidth - 2, height); graphics.setColor(Color.black); graphics.drawRect(valueP, valueQ, barWidth - 2, height); int labelWidth = labelFontMetrics.stringWidth(languages[j]); p = j * barWidth + (barWidth - labelWidth) / 2; graphics.drawString(languages[j], p, q); } } public static void main(String[] args) throws UnsupportedLookAndFeelException { UIManager.setLookAndFeel(new McWinLookAndFeel()); JFrame frame = new JFrame(); frame.setSize(350, 300); double[] value= new double[5]; String[] languages = new String[5]; value[0] = 1; languages[0] = "Spring";
value[1] = 2; languages[1] = "JSF";
value[2] = 3; languages[2] = "Struts";
value[3] = 4; languages[3] = "EJB";
value[4] = 5; languages[4] = "JPA"; frame.getContentPane().add(new SampleBarChart(value, languages, "Framework Java"));
WindowListener winListener = new WindowAdapter() { public void windowClosing(WindowEvent event) { System.exit(0); } }; frame.addWindowListener(winListener); frame.setVisible(true); } }
Bila syntax anda benar ,maka setelah di compile akan muncul sebuah chart seperti tampilan di desktop saya berikut anda dapat mendownload projectnya di akun github saya https://gist.github.com/1726770Happy coding!! Anugrah Bagus Susilo | |
|