Jadi kenapa tidak kita selaraskan saja warnanya, dan sesuaikan dengan tema yang kita buat. misalnya dengan tema nimbus. kita bisa merubah semua icon (yang warna warni, maupun yang hitam putih sekalipun) menjadi selaras. Masih bingung, cek di gambar saja:
Jadi kita bisa merubah semua icon yang ada pada aplikasi kita menjadi satu tema. (pada bagian toolbar juga terlihat icon-icon yang sudah berubah).
Oke, lanjut. Berikut cara untuk "Mendekorasi Ulang" icon supaya sesuai dengan keinginan kita.
Langkah pertama
Buat Sebuah project pada Netbeans, kemudian buat satubuah Class didalamnya (Nama package dan class terserah agan-agan semua).
Langkah kedua.
silahkan masukan kode berikut:
package javadanphp.iconkeren; import java.awt.AlphaComposite; import java.awt.Color; import java.awt.GradientPaint; import java.awt.Graphics2D; import java.awt.Image; import java.awt.image.BufferedImage; import java.awt.image.ConvolveOp; import java.awt.image.Kernel; import javax.swing.Icon; import javax.swing.ImageIcon; /** * * @author Taopik Ridwan */ public class IconKerenPainter { public static Icon createIconKeren(Image image, int byngn_dlm_pixel) { BufferedImage newImage = new BufferedImage(image.getWidth(null), image.getHeight(null), BufferedImage.TYPE_4BYTE_ABGR); Graphics2D graphics = newImage.createGraphics(); GradientPaint paint = new GradientPaint(0, 0, new Color(0x2C4873), 0, image.getHeight(null), new Color(0x6D8EC0)); graphics.setPaint(paint); graphics.fillRect(0, 0, newImage.getWidth(), newImage.getHeight()); graphics.setComposite(AlphaComposite.DstIn); graphics.drawImage(image, 0, 0, null); BufferedImage shadowImage = createInnerShadow(image, byngn_dlm_pixel); graphics.setComposite(AlphaComposite.SrcAtop); graphics.drawImage(shadowImage, 0, 0, null); graphics.dispose(); return new ImageIcon(newImage); } private static BufferedImage createInnerShadow( Image image, int unblurredShadowSize_pixels) { int twiceShadowSize = unblurredShadowSize_pixels * 2; BufferedImage punchedImage = new BufferedImage( image.getWidth(null) + twiceShadowSize, image.getHeight(null) + twiceShadowSize, BufferedImage.TYPE_INT_ARGB); Graphics2D graphics = punchedImage.createGraphics(); graphics.setColor(new Color(0, 0, 0, 140)); graphics.fillRect(0, 0, punchedImage.getWidth(), punchedImage.getHeight()); graphics.setComposite(AlphaComposite.DstOut); graphics.drawImage(image, twiceShadowSize, twiceShadowSize, null); graphics.dispose(); BufferedImage innerShaodowImage = createLinearBlurOp( unblurredShadowSize_pixels).filter(punchedImage, null); return innerShaodowImage.getSubimage(unblurredShadowSize_pixels, unblurredShadowSize_pixels, punchedImage.getWidth() - twiceShadowSize, punchedImage.getHeight() - twiceShadowSize); } private static ConvolveOp createLinearBlurOp(int size) { float[] data = new float[size * size]; float value = 1.0f / (float) (size * size); for (int i = 0; i < data.length; i++) { data[i] = value; } return new ConvolveOp(new Kernel(size, size, data)); } }
Sampai disini sebenarnya class ini sudah selesai dan bisa langsung digunakan. namun supaya bisa di drag and drop pada netbeans, kita bisa buat sebuah class lagi.
Langkah Ketiga
Buat sebuah Class,
Masukan Kode Berikut:
package javadanphp.iconkeren; import java.awt.Image; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JButton; /** * * @author Taopik Ridwan */ public class ButtonIconKeren extends JButton { @Override public void setIcon(Icon defaultIcon) { Icon newIcon = defaultIcon; if (defaultIcon != null) { Image ii = ((ImageIcon) defaultIcon).getImage(); newIcon = IconKerenPainter.createIconKeren(ii,1); } super.setIcon(newIcon); } }Selesai, Coba compile dan drag and drop component button yang barusan dibuat. kemudian tambahkan icon di dalamnya. Berhasil?? kalau ada kesulitan silahkan komentar disini.
Silahkan download Source Codenya disini:
Terima kasih sudah meluangkan waktu untuk mengunjungi blog ini.
0 komentar:
Posting Komentar