Create Java Class
Example : jProgressMetro.java
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Insets;
import java.awt.Paint;
import java.awt.Stroke;
import java.awt.font.TextLayout;
import java.awt.geom.Rectangle2D;
import javax.swing.JProgressBar;
public class jProgressMetro extends JProgressBar {
private float border = 1.0F;
private Color WarnaBorder = new Color(0, 153, 255);
private Color WarnaBayangan = new Color(0, 153, 255);
private Color WarnaProgress = new Color(0, 153, 255);
private Color WarnaText = new Color(255, 255, 255);
private float shadowOffsetX;
private float shadowOffsetY;
private int JarakBayangan = 1;
private int ArahBayangan = 60;
public jProgressMetro() {
setFont(new Font("Calibri", 1, 12));
}
@Override
protected void paintBorder(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Stroke st = g2.getStroke();
g2.setStroke(new BasicStroke(this.border));
g2.setColor(this.WarnaBorder);
g2.drawRect(0, 0, getWidth() - 1, getHeight() - 1);
g2.setStroke(st);
}
@SuppressWarnings("SuspiciousIndentAfterControlStatement")
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
Paint oldPaint = g2.getPaint();
Rectangle2D rect = new Rectangle2D.Double(0.0D, 0.0D, getWidth(), getHeight());
g2.clip(rect);
g2.setColor(new Color(0F, 0F, 0F, 0.0F));
g2.fill(rect);
Color gr = WarnaProgress;
g2.setPaint(gr);
g2.fillRect(0, 0, getWidth() * getValue() / 100, getHeight());
g2.setPaint(oldPaint);
if (this.paintString) {
computeShadow();
Insets insets = getInsets();
FontMetrics fm = getFontMetrics(getFont());
TextLayout layout = new TextLayout(getString(), getFont(), g2.getFontRenderContext());
Rectangle2D bounds = layout.getBounds();
int x = (int) (getWidth() - insets.left - insets.right - bounds.getWidth()) / 2;
int y = (getHeight() - insets.top - insets.bottom - fm.getMaxAscent() - fm.getMaxDescent()) / 2;
y += fm.getAscent() - 1;
g2.setColor(this.WarnaBayangan);
layout.draw(g2, x + (int) Math.ceil(this.shadowOffsetX), y + (int) Math.ceil(this.shadowOffsetY));
if (isEnabled()) {
g2.setColor(this.WarnaText);
} else {
g2.setColor(this.WarnaText.darker());
}
layout.draw(g2, x, y);
}
}
private void computeShadow() {
double rads = Math.toRadians(this.ArahBayangan);
this.shadowOffsetX = ((float) Math.cos(rads) * this.JarakBayangan);
this.shadowOffsetY = ((float) Math.sin(rads) * this.JarakBayangan);
}
public float getBorders() {
return this.border;
}
public void setBorders(float border) {
this.border = border;
}
public Color getWarnaBorder() {
return this.WarnaBorder;
}
public void setWarnaBorder(Color warnaborder) {
this.WarnaBorder = warnaborder;
}
public Color getWarnaBayangan() {
return this.WarnaBayangan;
}
public void setWarnaBayangan(Color warnabayangan) {
this.WarnaBayangan = warnabayangan;
}
public Color getWarnaText() {
return this.WarnaText;
}
public void setWarnaText(Color WarnaText) {
this.WarnaText = WarnaText;
}
public Color getWarnaProgress() {
return this.WarnaProgress;
}
public void setWarnaProgress(Color warnaProgress) {
this.WarnaProgress = warnaProgress;
}
public int getArahBayangan() {
return this.ArahBayangan;
}
public void setArahBayangan(int arahbayangan) {
this.ArahBayangan = arahbayangan;
}
public int getJarakbayangan() {
return this.JarakBayangan;
}
public void setJarakbayangan(int jarakBayangan) {
this.JarakBayangan = jarakBayangan;
}
}Clean and Build
Right click java project, select clean and build
How to Use
- Create Jframe
- Drag and drop jButtonRound.java into jframe


0 Komentar