在java的好看的进展酒吧

我想知道你是否有人知道如何在Java中显示一个漂亮的进度条,主要是使用Swing,虽然我不介意使用第三方库。

我一直在看JProgressBar教程,但没有一个是指造型吧。 阅读API我找到了一个返回ProgressBarUI对象的getUI方法,但是我没有看到很多方法来自定义那个。

我想要的是添加圆角,改变背景和前景色,宽度,长度,通常。

谢谢!

如果您不想替换用户选择的外观,您只需将UI委托替换为从BasicProgressBarUI派生的UI委托。

在此处输入图像描述

 import java.awt.Color; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JProgressBar; import javax.swing.plaf.basic.BasicProgressBarUI; /** @see http://stackoverflow.com/questions/8884297 */ public class ProgressBarUITest extends JPanel { public ProgressBarUITest() { JProgressBar jpb = new JProgressBar(); jpb.setUI(new MyProgressUI()); jpb.setForeground(Color.blue); jpb.setIndeterminate(true); this.add(jpb); } private static class MyProgressUI extends BasicProgressBarUI { private Rectangle r = new Rectangle(); @Override protected void paintIndeterminate(Graphics g, JComponent c) { Graphics2D g2d = (Graphics2D) g; g2d.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); r = getBox(r); g.setColor(progressBar.getForeground()); g.fillOval(rx, ry, r.width, r.height); } } private void display() { JFrame f = new JFrame("ProgressBarUITest"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(this); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { new ProgressBarUITest().display(); } }); } } 

最简单的方法是更改LookAndFeel ,甚至可以创建自己的类,从一个默认的L&F扩展,只需更改进度条的UI …