yup seperti janji kemaren, postingan ini bercerita tentang extreem swing make over. inti dari swing make over ini adalah perubahan tampilan se extreem mungkin. yang memang jika seelumnya ada temen temen yang menggunakan bahasa pemograman lain spt delphi atau VB, sulit untuk mengobrak abrik tampilan, karena memang tidak sefleksible swing.
konsep ini sudah lama adanya, tp saya baru berani posting sekarang, soalnya baru ketemu rahasianya akhir akhir ini. jadi yang setelah sedikit tau, gak ada salahnya di share. (hehe kayak yang jago aja)
Yang harus di perhatikan dalam merubah tampilan dari Swing kita akan meng-override method paint(), atau painComponent(). karena kedua method inilah yang digunakan swing untuk membentuk tampilan.
Ok kita mulai.
pada postingan ini saya akan membuat gradienPanel, itu lho panel yang warna warni (he kayak pelangi aja).
pertama siapkan editor temen-temen. (kalau saya pake netbeans biar lebih asik soalnya lebih mudah digunakan nantinya).
Ok Copy pastekan aja Code ini:
__________________________________________________________________________
/*
* DILARANG MENGHAPUS ATAU MENGEDIT COPYRIGHT INI.
*
* Copyright 2009 Fiqri Tech
* All rights reserved.
*
* Semua isi dalam file ini adalah hak milik dari blackonta@gmail.com
* Anda tak diperkenankan untuk menggunakan file atau mengubah file ini
*
*/
package ovq.fiqri.lib.swing.plaf;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.LayoutManager;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
/**
*
* @author Opik
*/
public class QGradienPanel extends JPanel{
private static final long serialVersionUID = -1;
private BufferedImage gradientImage;
private Color warnaAtas = new Color(204, 249, 124);
private Color warnaBawah = new Color(174, 222, 94);
public QGradienPanel(){
super();
this.setBorder(javax.swing.BorderFactory.createEmptyBorder(3,3,3,3));
}
public QGradienPanel(LayoutManager layout) {
super(layout);
addComponentListener(new GradientCacheManager());
}
public Color getWarnaAtas() {
return warnaAtas;
}
public void setWarnaAtas(Color warnaAtas) {
this.warnaAtas = warnaAtas;
}
public Color getWarnaBawah() {
return warnaBawah;
}
public void setWarnaBawah(Color warnaBawah) {
this.warnaBawah = warnaBawah;
}
@Override
protected void paintComponent(Graphics g) {
createImageCache();
if (gradientImage != null) {
g.drawImage(gradientImage, 0, 0, getWidth(), getHeight(), null);
}
}
protected void createImageCache() {
int width = 2;
int height = getHeight();
if (width == 0 || height == 0) {
return;
}
if (gradientImage == null ||
width != gradientImage.getWidth() ||
height != gradientImage.getHeight()) {
gradientImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = gradientImage.createGraphics();
GradientPaint painter = new GradientPaint(0, 0, warnaBawah,
0, height / 2, warnaAtas);
g2.setPaint(painter);
Rectangle2D rect = new Rectangle2D.Double(0, 0, width, height / 2.0);
g2.fill(rect);
painter = new GradientPaint(0, height / 2, warnaAtas,
0, height, warnaBawah);
g2.setPaint(painter);
rect = new Rectangle2D.Double(0, (height / 2.0) - 1.0, width, height);
g2.fill(rect);
g2.dispose();
}
}
private void disposeImageCache() {
synchronized (gradientImage) {
gradientImage.flush();
gradientImage = null;
}
}
private class GradientCacheManager implements ComponentListener {
public void componentResized(ComponentEvent e) {
}
public void componentMoved(ComponentEvent e) {
}
public void componentShown(ComponentEvent e) {
}
public void componentHidden(ComponentEvent e) {
disposeImageCache();
}
}
}
__________________________________________________________________________
nah perhatikan kode pada method paintComponent() diatas, Abaikan saja kode ini
if (gradientImage != null) {
g.drawImage(gradientImage, 0, 0, getWidth(), getHeight(), null);
}
}
soalnya itu dibuat kalau nantu temen temen ingin menggunakan gambar sebagai backgroundnya.
jadi backgroundnya akan dibuat menggunakan warna gradien antara warnaatas, dan warnaBawah.
Jadi ya hasilnya kurang lebih seperti ini:
nah kalau temen-temen pake netbeans, untuk penggunaannya tinggal drag class diaas ke JPanel, Jframe atau ke JDialog.
nah perhatikan pada propertiesnya maka akan ditambahkan dua properties sebagai berikut.
jadi kayak gini deh:
jadi tinggal dirubah saja warnanya sesuai dengan keinginan. ok moga bermanfaan n keep creative. Koment ya......