用java生成一个有渐变色的进度条以及调用
时间: 2024-05-01 21:18:29 浏览: 13
可以使用Java Swing的JProgressBar组件来实现带渐变色的进度条,需要继承JProgressBar并覆写其paintComponent()方法来实现。以下是一个简单的示例代码:
```java
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
public class GradientProgressBar extends JProgressBar {
private static final long serialVersionUID = 1L;
private Color startColor, endColor;
public GradientProgressBar(Color startColor, Color endColor) {
this.startColor = startColor;
this.endColor = endColor;
}
@Override
protected void paintComponent(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
int w = getWidth();
int h = getHeight();
GradientPaint gradient = new GradientPaint(0, 0, startColor, w, 0, endColor);
g2.setPaint(gradient);
g2.fillRect(0, 0, w, h);
if (isStringPainted()) {
paintString(g2);
}
if (getValue() > getMinimum()) {
int progress = (int) ((double) (w - getInsets().left - getInsets().right) / (double) (getMaximum() - getMinimum()) * (double) (getValue() - getMinimum()));
g2.setColor(getForeground());
g2.fillRect(getInsets().left, getInsets().top, progress, h - getInsets().top - getInsets().bottom);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(() -> {
JProgressBar progressBar = new GradientProgressBar(Color.YELLOW, Color.RED);
progressBar.setStringPainted(true);
progressBar.setMinimum(0);
progressBar.setMaximum(100);
progressBar.setValue(50);
JPanel panel = new JPanel();
panel.add(progressBar);
JFrame frame = new JFrame("GradientProgressBar Demo");
frame.setContentPane(panel);
frame.setSize(400, 100);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
});
}
}
```
调用如下:
```java
JProgressBar progressBar = new GradientProgressBar(new Color(54, 146, 254), new Color(255, 136, 26));
panel.add(progressBar);
```