Java中如何實(shí)現(xiàn)自定義進(jìn)度條

小樊
81
2024-10-15 04:00:46

在Java中,可以使用Swing庫(kù)中的JProgressBar類來(lái)實(shí)現(xiàn)自定義進(jìn)度條

  1. 導(dǎo)入所需的庫(kù):
import javax.swing.*;
import java.awt.*;
  1. 創(chuàng)建一個(gè)自定義的JProgressBar類:
public class CustomProgressBar extends JProgressBar {
    private String text;

    public CustomProgressBar(int min, int max, String text) {
        super(min, max);
        this.text = text;
        setStringPainted(true);
    }

    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
        FontMetrics fontMetrics = g2d.getFontMetrics();
        int x = getWidth() - fontMetrics.stringWidth(text) - 10;
        int y = getHeight() / 2 + fontMetrics.getAscent() / 2;
        g2d.setColor(getForeground());
        g2d.drawString(text, x, y);
    }
}

在這個(gè)類中,我們重寫了paintComponent方法來(lái)自定義進(jìn)度條的文本位置和樣式。

  1. 在主程序中使用自定義進(jìn)度條:
public class Main {
    public static void main(String[] args) {
        JFrame frame = new JFrame("Custom ProgressBar");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400, 100);

        CustomProgressBar progressBar = new CustomProgressBar(0, 100, "0%");
        progressBar.setValue(25); // 設(shè)置進(jìn)度條的值
        frame.add(progressBar, BorderLayout.CENTER);

        frame.setVisible(true);
    }
}

在這個(gè)例子中,我們創(chuàng)建了一個(gè)包含自定義進(jìn)度條的窗口,并設(shè)置了進(jìn)度條的值。你可以根據(jù)需要修改進(jìn)度條的樣式、顏色和文本。

0