Manipulasi JButton (Membuat Tombol Keren)

Masih seperti yang lalu-lalu, tentang belajar memanipulasi komponen Swing. Nah, kalau kemarin 3 seri telah kita pelajar bersama tentang belajar memanipulasi JPanel. Saat ini kita coba untuk mengubek-ubek JButton. 😀 Masih seperti Jpanel, JButton pun memanfaatkan Overide PaintComponent dan Graphic2D untuk melakukan manipulasi. Berikut ini contoh hasilnya :
ButtonUnik

Sedangkan untuk sourcecode atau kode programnya dapat kita perhatikan baris demi baris berikut ini :

/*
 * Pokoknya OpenSource aja dech.... gratis untuk dikembangkan
 * Kalau ada salah, mohon dikonfirmasi, kalau ada kerusakan akibat
 * Sourcecode ini ya... mo gimana lagi... tanggung sendiri aja dech...
 */
package tampilan.button;

import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.Shape;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D;
import javax.swing.JButton;

/**
 *
 * @author afa al farazi
 */
public class ButtonGradient extends JButton {

    private Paint paint;
    private Shape shape;
    private Paint glass;
    private Paint glass2;
    private boolean over;
    private boolean tekan;

    public ButtonGradient() {
        setOpaque(false);
        setFocusPainted(false);
        setContentAreaFilled(false);
        setBorderPainted(false);

        //Menambahkan mouse listener
        addMouseListener(new MouseAdapter() {

            //saat mouse di atas button
            @Override
            public void mouseEntered(MouseEvent e) {
                setOver(true);
            }

            //saat mouse di luar button
            @Override
            public void mouseExited(MouseEvent e) {
                setOver(false);
            }

            @Override
            public void mousePressed(MouseEvent e) {
                setTekan(true);
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                setTekan(false);
            }
        });

    }

    public boolean isOver() {
        return over;
    }

    public void setOver(boolean over) {
        this.over = over;
        repaint();
    }

    public boolean isTekan() {
        return tekan;
    }

    public void setTekan(boolean tekan) {
        this.tekan = tekan;
        repaint();
    }

    @Override
    protected void paintComponent(Graphics g) {
        Graphics2D gd = (Graphics2D) g.create();
        paint = new GradientPaint(0, 0, Color.BLACK, 0, getHeight(), Color.BLUE);
        shape = new RoundRectangle2D.Double(0, 0, getWidth(), getHeight(), getHeight(), getHeight());

        if (isOver()) {
            glass = new GradientPaint(0, 0, new Color(1F, 1F, 1F, 0F), 0, getHeight(), new Color(1F, 1F, 1F, 0.5F));
        } else {
            glass = new GradientPaint(0, 0, new Color(1F, 1F, 1F, 0.5F), 0, getHeight(), new Color(1F, 1F, 1F, 0F));
        }

        if (isTekan()) {
            glass2 = new GradientPaint(0, 0, new Color(1F, 1F, 1F, 0F), 0, getHeight(), new Color(1F, 1F, 1F, 0.5F));
        } else {
            glass2 = new GradientPaint(0, 0, new Color(1F, 1F, 1F, 0.5F), 0, getHeight(), new Color(1F, 1F, 1F, 0F));
        }

        gd.setPaint(paint);
        gd.fill(shape);

        super.paintComponent(g);

        gd.setPaint(glass);
        gd.fill(shape);
        gd.setPaint(glass2);
        gd.fill(shape);
        gd.dispose();
    }
}

Selamat mencoba, semoga sukses…!!! 😀

Iklan

7 comments on “Manipulasi JButton (Membuat Tombol Keren)

  1. maaf mas boleh gabung ga??
    saya mau nanya nih, saya kan baru belajar tentang java dan aplikasinya pake netbean, tapi saya belum tau cara pengaturan di netbeannya! bisa minta caranya?

  2. selamat siang….salam kenal…saya mahasiswa baru dan juga baru mengenal JAVA..saya boleh minta bantuan saudara untuk membuat suatu program aplikasi Java Swing untuk melakukan penambahan dan penghapusan item di list menggunakan objek DefaultListMode.terima kasih.???

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s