Pengarang: BUILDER.COM
JSP menyediakan banyak alat sederhana dan praktis, termasuk membaca data dari database, mengirim data, dan mampu menampilkan hasilnya dalam bentuk diagram lingkaran. Sekarang mari kita lihat metode sederhana namun praktis ini.
apa yang kamu butuhkan
Untuk menjalankan contoh yang terkait dengan artikel ini dengan benar, Anda memerlukan JDK 1.2 atau lebih tinggi, sistem manajemen basis data relasional, dan server jaringan JSP. Saya men-debug contoh-contoh ini di Tomcat, dan saya juga menggunakan kelas com.sun.image.codec.jpeg yang dirilis oleh Sun Java 2 SDK.
Desain database Misalkan Anda bekerja pada perusahaan yang menjual buah-buahan segar. Buah-buahan yang dijual oleh perusahaan tersebut antara lain: apel, jeruk, dan anggur. Sekarang atasan Anda ingin menggunakan grafik berbentuk pie untuk menampilkan total volume penjualan setiap jenis buah. Grafik berbentuk pie dapat membuat penjualan setiap produk terlihat jelas secara sekilas, dan atasan dapat dengan cepat memahami transaksi produk perusahaan. .
Tabel A menggunakan dua daftar database dari artikel ini. Daftar pertama (Produk) berisi nama seluruh produk yang terjual; daftar kedua (Penjualan) berisi volume penjualan masing-masing produk.
Daftar Produk berisi dua bidang: productID dan nama produk. Daftar Penjualan berisi saleID, productID, dan jumlah total. productID dalam daftar penjualan menyediakan hubungan antara dua daftar. Total dalam daftar penjualan berisi jumlah tunai untuk setiap penjualan sebagai angka floating point.
Metode getProducts() pada Tabel B menghubungkan dua database dan menyimpan semua nama produk dalam sebuah array. Saya menetapkan aturan database berikut:
ProductID adalah yang paling unik dalam daftar produk, dan merupakan juga yang paling kritis;
ProductID memiliki nilai 0 untuk record pertama;
Semua record berturut-turut berikutnya bersifat kumulatif, sehingga productID dari record kedua adalah 1, productID dari record ketiga adalah 2, dan seterusnya.
Aturan database ini memungkinkan data disimpan dalam array produk, seperti yang ditunjukkan di bawah ini:
arr[rs.getInt("productID")] = rs.getString("productname");
Beberapa sistem manajemen database mengizinkan penyimpanan data secara otomatis secara default. Akumulasi atau penyortiran otomatis. Saat Anda mendesain database, pastikan terlebih dahulu mengetahui aturan apa yang diikuti sistem manajemen database Anda, seperti akumulasi otomatis, penyortiran otomatis, dll.
Dapatkan total volume penjualan
Dalam kebanyakan kasus, akan ada banyak catatan dalam daftar penjualan, jadi akses cepat dan efisien ke database sangatlah penting. Sekarang kita hanya perlu mengakses total penjualan setiap produk di database.
Metode getSales() pada Tabel C terhubung ke database dan mengembalikan array yang berisi total penjualan setiap produk. Ketika getSales() melintasi semua catatan, ia hanya menyimpan volume penjualan baru setiap produk:
int product = rs.getInt("productID");
arr[produk] += rs.getFloat("jumlah");
Setiap produk pada diagram lingkaran harus ditampilkan dalam warna yang berbeda. Untuk mencapai tujuan ini, kita membuat objek pieColor (seperti yang ditunjukkan pada Tabel D). Objek ini berisi array warna yang terkait:
Color pieColorArray[] = {new Color(210,60,60), new Color(60,210, 60 )...}
Kelas pieColor mendefinisikan metode setNewColor(), yang dapat menaikkan curPieColor dan indeks. Pada saat yang sama, ia dapat memeriksa bahwa indeks tidak melebihi rentang batas, yaitu metode yang digunakan adalah: jika curPieColor terlalu besar, nilai 0 akan diberikan.
Lebih efisien, setNewColor() mengulang setiap warna dan mengeksekusi kode berikut pada warna pertama:
curPieColor++;
if(curPieColor >= pieColorArray.panjang)
{curPieColor = 0;}
RenderingHints dan kelas antialiasing
Kelas java.awt.RenderingHints mendefinisikan banyak metode untuk menampilkan grafik dua dimensi, termasuk metode alpha_interpolation, dithering, dan antialiasing. RenderingHints membantu menentukan bagaimana grafik ditampilkan dan bagaimana grafik diproses dengan baik.
Agar tampilannya lancar, Anda dapat menggunakan metode antialiasing untuk memproses grafik pie. Antialiasing adalah metode penghalusan grafis. Algoritme memilih nilai warna piksel khusus dan menggantikan piksel perpotongan, sehingga memperhalus perpotongan garis.
Gambar A mengilustrasikan efek metode antialiasing. Terlihat perpotongan garis-garis pada grafik pie dengan menggunakan metode antialiasing menjadi sangat mulus.
Gambar A
Pada saat yang sama, Anda juga dapat membuat objek RenderingHints dan meneruskannya ke metode Graphics2D setRenderingHints(), seperti yang ditunjukkan di bawah ini:
RenderingHints renderHints = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setRenderingHints(renderHints);
Buat batas yang dapat disesuaikan
Bentuk pai pada Gambar A memiliki batas. Bagaimana cara mengubah ukuran batas? Anda dapat mendefinisikan int border = 10 terlebih dahulu, lalu menghitung ukuran area di dalam border untuk mencapai:
Ellipse2D.Double elb = new Ellipse2D.Double(x_pie - border/2, y_pie - border/2, pieWidth + border, pieHeight + border);
x_pie Nilai y_pie mewakili sudut kiri atas persegi yang mengelilingi bentuk pai. Kita mendapatkan bagian tengah bentuk pai dengan mengambil separuh luas tepinya (border/2).
Teori Arc (Arc) Metode fillArc() yang diwarisi dari kelas java.awt.Graphics menyediakan metode sederhana untuk menggambar berbagai bagian (atau busur) grafik berbentuk pai:
g2d.fillArc(x_position, y_position, width, height, startAngle , menyapuAngle);
bilangan bulat x_position, dan y_position mewakili koordinat x, y dari sudut kiri atas busur yang akan diisi, dan bilangan bulat lebar dan tinggi mewakili ukuran spesifiknya. Jika nilai lebar dan tinggi sama, maka diagram lingkaran akan berbentuk lingkaran. Jika lebar dan tinggi tidak sama, diagram lingkaran akan berbentuk elips.
Metode fillArc() menentukan ukuran busur berdasarkan nilai integer sapuanAngle. Jika nilai sapuanAngle positif, busur digambar berlawanan arah jarum jam, jika tidak maka ditarik searah jarum jam.
Langkah pertama dalam menggambar busur adalah menggunakan metode getPieColor() pada objek pieColor untuk mendapatkan warna busur berbentuk pai terdekat dan menetapkannya ke busur saat ini:
g2d.setColor(pc.getPieColor())
; , melalui perulangan terus menerus sales[] array dan mengakumulasinya untuk mendapatkan total volume penjualan:
salesTotal += sales[i];
Dengan menggunakan total volume penjualan, Anda dapat menghitung persentase penjualan setiap produk dalam total volume penjualan:
float perc = (sales [i]/salesTotal);
Kami menghitung sapuanAngle untuk menetapkan derajat ke setiap bagian busur:
int
sapuanAngle = (int)(perc * 360);
ke sapuanAngle saat ini. Hal ini memastikan bahwa bagian busur saat ini dimulai dari busur sebelumnya, sehingga menciptakan bentuk pai yang lengkap.
Ikon Tampilan Ikon menyediakan cara paling sederhana untuk menampilkan berbagai bagian grafik lingkaran. Ukuran ikon harus sesuai dengan jumlah yang ditempati dalam diagram lingkaran.
Gambar B menunjukkan grafik lingkaran lengkap dan ikon yang sesuai dengan setiap bagian, termasuk nama produk, total volume penjualan, dan pangsa setiap bagian.
Gambar B
Ringkasan
Artikel ini menjelaskan cara menggunakan JSP untuk menggambar metode dan algoritme grafik pie. Metode dan algoritme ini sederhana dan praktis, dan pengembang dapat memanfaatkan sepenuhnya metode ini.