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 :

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…!!! ![]()



Posted by asep on Oktober 21, 2009 at 11:58 am
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?
Posted by farazinux on November 3, 2009 at 11:35 am
Dengan senang hati…
Posted by agus nue on November 11, 2009 at 10:13 am
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.???