"Mendekorasi Ulang" Icon supaya lebih serasi dengan Tema Aplikasi | Tempat Belajar dan Berbagi Pengetahuan Java dan PHP
Home » , , , , , , » "Mendekorasi Ulang" Icon supaya lebih serasi dengan Tema Aplikasi

"Mendekorasi Ulang" Icon supaya lebih serasi dengan Tema Aplikasi

Dipostingkan Oleh Ridwan Labs pada Selasa, 09 April 2013 - Diupdate Pada: 4/09/2013

Maksud saya adalah terkadang kita kesulitan dalam menyelaraskan icon dengan tema aplikasi yang kita sedang kerjakan. Terkadang waktu untuk memilih icon yang cocok membutuhkan waktu lebih lama daripada membuat kode aplikasi itu sendiri. Bahkan jika kita salah memilih Icon, aplikasi kita malah terlihat "Norak" wah maaf dengan penggunaan kata-katanya.

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.
Share this article :

0 komentar:

Posting Komentar

Cari Artikel



 
Support : Admin
Copyright © 2013. Tempat Belajar dan Berbagi Pengetahuan Java dan PHP - All Rights Reserved
Template Created by Creating Website Modified by CaraGampang.Com
Proudly powered by Blogger