Lets Start To Rock Your Swing

16 views
Postingan ini bercerita perihal extreme swing make over. Inti dari swing make over ini ialah perubahan tampilan se extreem mungkin. yang memang jikalau seelumnya ada temen temen yang memakai bahasa pemograman lain menyerupai delphi atau VB, sulit untuk mengobrak abrik tampilan, sebab memang tidak sefleksible swing.

Konsep ini sudah usang adanya, tp aku gres berani posting sekarang, soalnya gres ketemu rahasianya simpulan tanggapan ini. jadi yang sesudah sedikit tau, gak ada salahnya di share. (hehe kayak yang ahli aja). Yang harus di perhatikan dalam merubah tampilan dari Swing kita akan meng-override method paint(), atau painComponent(). sebab kedua method inilah yang dipakai swing untuk membentuk tampilan.

Ok kita mulai.

pada postingan ini aku akan menciptakan gradienPanel, itu lho panel yang warna warni (he kayak pelangi aja).
pertama siapkan editor temen-temen. (kalau aku pake netbeans semoga lebih asik soalnya lebih gampang dipakai 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 ialah hak milik dari blackonta@gmail.com
* Anda tak diperkenankan untuk memakai 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 isyarat pada method paintComponent() diatas, Abaikan saja isyarat ini
if (gradientImage != null) {
g.drawImage(gradientImage, 0, 0, getWidth(), getHeight(), null);
}
}
soalnya itu dibentuk kalau nantu temen temen ingin memakai gambar sebagai backgroundnya.
jadi backgroundnya akan dibentuk memakai warna gradien antara warnaatas, dan warnaBawah.

Makara ya kesannya kurang lebih menyerupai 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.

jadinya menyerupai ini:

jadi tinggal dirubah saja warnanya sesuai dengan keinginan. ok moga bermanfaan n keep creative.

Silahkan Koment jikalau dirasa ada yang kurang dimengerti

Author: 
    author
    No related post!