Bosen dengan tampilan swing yang itu-itu aja?
memang si kita bisa pake LookAndFill, tapi masih aja kita ngerasa kurang cocok. la terus ngapain? ya buat sesuai yang kita inginkan!
kita akan coba buat panel dengan gradien 2 warna dan kita manfaatin tu kelas graphic2D dan temen-temenye!
nah berikut langkahnya:
1. Buat kelas Panel yang kita extend dari JPanel miliknya swing, ni sourcenya:
//class yang digunakan
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.GeneralPath;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class Panel extends JPanel {
private static final long serialVersionUID = -1;
private BufferedImage gradientImage; //menciptakan bufferimage untuk mengola gradien
private Color black = Color.BLACK; //warna1 gradien
private Color warna = Color.BLUE; //warna2 gradien
public Panel() {
super();
}
//membuat panel dan memasang gradien
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (isOpaque()) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
setUpGradient();
g2.drawImage(gradientImage, 0, 0, getWidth(), getHeight(), null);
int width = getWidth();
int height = getHeight() * 5 / 100;
Color light = new Color(1F, 1F, 1F, 0.5F);
Color dark = new Color(1F, 1F, 1F, 0.0F);
GradientPaint paint = new GradientPaint(0, 0, light, 0, height, dark);
GeneralPath path = new GeneralPath();
path.moveTo(0, 0);
path.lineTo(0, height);
path.curveTo(0, height, width / 2, height / 2, width, height);
path.lineTo(width, 0);
path.closePath();
g2.setPaint(paint);
g2.fill(path);
paint = new GradientPaint(0, getHeight(), light, 0, getHeight() - height, dark);
path = new GeneralPath();
path.moveTo(0, getHeight());
path.lineTo(0, getHeight() - height);
path.curveTo(0, getHeight() - height, width / 2, getHeight() - height / 2, width, getHeight() - height);
path.lineTo(width, getHeight());
path.closePath();
g2.setPaint(paint);
g2.fill(path);
g2.dispose();
}
}
//fungsi untuk membuat background gradien
private void setUpGradient() {
gradientImage = new BufferedImage(1, getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = (Graphics2D) gradientImage.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint paint = new GradientPaint(0, 0, black, 0, getHeight(), warna);
g2.setPaint(paint);
g2.fillRect(0, 0, 1, getHeight());
g2.dispose();
}
}
2. Nah sekarang kita bisa pake kelas Panel dan kita tempel ke JFrame, berikut sourcenya:
import javax.swing.*;
public class TesPanel extends JFrame {
public TesPanel(){
super();
this.setSize(300,200);
Panel pnl = new Panel();
this.add(pnl);
this.setTitle("Menmpercantik Panel");
//this.setUndecorated(true);
this.setVisible(true);
}
public static void main(String args[]){
TesPanel apl = new TesPanel();
}
}
ni hasilnya!!! gmn ok kan?
3. selamat mencoba!!!!
download source
memang si kita bisa pake LookAndFill, tapi masih aja kita ngerasa kurang cocok. la terus ngapain? ya buat sesuai yang kita inginkan!
kita akan coba buat panel dengan gradien 2 warna dan kita manfaatin tu kelas graphic2D dan temen-temenye!
nah berikut langkahnya:
1. Buat kelas Panel yang kita extend dari JPanel miliknya swing, ni sourcenya:
//class yang digunakan
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.GeneralPath;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
public class Panel extends JPanel {
private static final long serialVersionUID = -1;
private BufferedImage gradientImage; //menciptakan bufferimage untuk mengola gradien
private Color black = Color.BLACK; //warna1 gradien
private Color warna = Color.BLUE; //warna2 gradien
public Panel() {
super();
}
//membuat panel dan memasang gradien
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (isOpaque()) {
Graphics2D g2 = (Graphics2D) g.create();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
setUpGradient();
g2.drawImage(gradientImage, 0, 0, getWidth(), getHeight(), null);
int width = getWidth();
int height = getHeight() * 5 / 100;
Color light = new Color(1F, 1F, 1F, 0.5F);
Color dark = new Color(1F, 1F, 1F, 0.0F);
GradientPaint paint = new GradientPaint(0, 0, light, 0, height, dark);
GeneralPath path = new GeneralPath();
path.moveTo(0, 0);
path.lineTo(0, height);
path.curveTo(0, height, width / 2, height / 2, width, height);
path.lineTo(width, 0);
path.closePath();
g2.setPaint(paint);
g2.fill(path);
paint = new GradientPaint(0, getHeight(), light, 0, getHeight() - height, dark);
path = new GeneralPath();
path.moveTo(0, getHeight());
path.lineTo(0, getHeight() - height);
path.curveTo(0, getHeight() - height, width / 2, getHeight() - height / 2, width, getHeight() - height);
path.lineTo(width, getHeight());
path.closePath();
g2.setPaint(paint);
g2.fill(path);
g2.dispose();
}
}
//fungsi untuk membuat background gradien
private void setUpGradient() {
gradientImage = new BufferedImage(1, getHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = (Graphics2D) gradientImage.getGraphics();
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint paint = new GradientPaint(0, 0, black, 0, getHeight(), warna);
g2.setPaint(paint);
g2.fillRect(0, 0, 1, getHeight());
g2.dispose();
}
}
2. Nah sekarang kita bisa pake kelas Panel dan kita tempel ke JFrame, berikut sourcenya:
import javax.swing.*;
public class TesPanel extends JFrame {
public TesPanel(){
super();
this.setSize(300,200);
Panel pnl = new Panel();
this.add(pnl);
this.setTitle("Menmpercantik Panel");
//this.setUndecorated(true);
this.setVisible(true);
}
public static void main(String args[]){
TesPanel apl = new TesPanel();
}
}
ni hasilnya!!! gmn ok kan?
3. selamat mencoba!!!!
download source
Sip mas!!!
ReplyDeleteThanks tutornya....
ReplyDelete@ucup, sama-sama mas, semoga bisa bermanfaat
ReplyDeletenice ... cuman code nya klo bisa dikasih PlugIns SyntaxHighlighter dunkz.. biar enak dibaca :D
ReplyDeletemas..
ReplyDeletenh gimana yahh caranya buat nambahin label atau yang lainnya.
saya pake netbeans mas..
mohon petunjuknya..