Рисование ProgressBar с использованием Graphics2D

Я хотел сделать таймер обратного отсчета, который выглядит следующим образом. Когда начинается обратный отсчет, мне нравится, когда зеленая полоса истощается и меняет цвет при достижении определенного процента. (Пример: 50% = оранжевый и 25% = красный)

Я получил код обратного отсчета, но я не знаю, как обновить зеленую полосу.

private boolean pressed = false;
private long startTime = -1;
private int dur = 10000;


Timer tmr = new Timer(100, new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent e) {
        if (startTime < 0) {
            startTime = System.currentTimeMillis();
        }
        long now = System.currentTimeMillis();
        long clockTime = now - startTime;
        if (clockTime >= dur) {
            clockTime = dur;
            tmr.stop();
        }
        SimpleDateFormat df = new SimpleDateFormat("mm:ss:SSS");
        lblTimer.setText(df.format(dur - clockTime));
    }


 });

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) { 
        tmr.start();
    }

Я искал и искал, но не смог найти ничего, связанного с моей проблемой. Все, что я могу найти, это те, которые используют JProgressBar который я не хочу использовать.

Обновить:

Это код, чтобы заполнить мою зеленую полосу.

int xp[] = {115, 115, 288, 294, 449, 457};
int yp[] = {30, 50, 50, 40, 40, 30};

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);
    GeneralPath cShape = new GeneralPath(GeneralPath.WIND_EVEN_ODD,x2Points.length);
    cShape.moveTo(xp[0], yp[0]);
    for (int i = 1; i < x2Points.length; i++) {
        cShape.lineTo(xp[i], yp[i]);
    }
    cShape.closePath();
    Graphics2D g2 = (Graphics2D) g;
    g2.setPaint(new Color(0,255,0));
    g2.fill(cShape);
}

0 ответов

Другие вопросы по тегам