JProgressBar百分比不同進度條顏色不同

jopen 12年前發布 | 42K 次閱讀 Java Java開發

1、需求

需要做一個JProgressBar,1/3以下時為紅色,2/3以下時為黃色,以上為綠色有一點像預警系統

2、代碼實現GyrJProgressBar

 GyrJProgressBar中利用自定義的ProgressBarUI來改變進度條的顏色

package org.noahx.ui.progressbar;

import javax.swing.*;
import javax.swing.plaf.basic.BasicProgressBarUI;
import java.awt.*;

/**
 * Created with IntelliJ IDEA.
 * User: noah
 * Date: 7/24/12
 * Time: 8:43 PM
 * To change this template use File | Settings | File Templates.
 */
public class GyrJProgressBar extends JProgressBar {

    private class GyrProgressUI extends BasicProgressBarUI {

        private double greenOverPercent=(2d/3d)*100d;

        private double yellowOverPercent=(1d/3d)*100d;

        private JProgressBar jProgressBar;

        private GyrProgressUI(JProgressBar jProgressBar) {
            this.jProgressBar = jProgressBar;
        }

        @Override
        protected void paintDeterminate(Graphics g, JComponent c) {


            double percent=100d*this.jProgressBar.getValue()/(this.jProgressBar.getMaximum()-this.jProgressBar.getMinimum());

            if (percent > this.greenOverPercent) {
                this.jProgressBar.setForeground(Color.green);
            } else if (percent > this.yellowOverPercent) {
                this.jProgressBar.setForeground(Color.yellow);
            } else {
                this.jProgressBar.setForeground(Color.red);
            }
            super.paintDeterminate(g, c);
        }

    }

    public GyrJProgressBar() {
        init();
    }

    public GyrJProgressBar(int orient) {
        super(orient);
        init();
    }

    public GyrJProgressBar(int min, int max) {
        super(min, max);
        init();
    }

    public GyrJProgressBar(int orient, int min, int max) {
        super(orient, min, max);
        init();
    }

    public GyrJProgressBar(BoundedRangeModel newModel) {
        super(newModel);
        init();
    }

    private void init(){
        this.setBorderPainted(false);
        this.setUI(new GyrProgressUI(this));
    }
}

3、效果

JProgressBar百分比不同進度條顏色不同

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!