jProgress Metro Style


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

Properties Option


 

 

Posting Komentar

0 Komentar