我想知道如果有人知道如何在
Java中显示一个漂亮的进度条,大多使用Swing,尽管我不介意使用第三方库.
我一直在看JProgressBar教程,但是他们都没有指定样式.读取API我发现一个返回ProgressBarUI对象的getUI方法,但是我没有看到很多方法可以自定义.
我想要的是添加圆角,改变背景和前景色,宽度,长度,通常.
谢谢!
解决方法
如果您不想替换用户选择的Look&感觉,你可以用一个派生自
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 https://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(r.x,r.y,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(); } }); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。