如何在JProgressBar上添加文本?

20

我正在使用jprogressbar来表示可用性状态。 我想在进度条内显示40%的文本[假设值]。 如何实现?该文本将根据可用性值进行更改。

8个回答

42
你可以使用:
初始化:
progressBar.setStringPainted(true);

更新:

progressBar.setValue(newValue);

不需要这一行:progressBar.setString(newValue + "%"); - Houssam Badri
setString这一行可能对那些想要显示百分比以外内容的人有所帮助。它对我很有用 :) - StarSweeper

4
  • 使用setStringPainted(true)来显示工作完成的百分比

  • 使用setValue()来设置递增值,使用setString()在完成时显示结束消息...

以下是我的代码示例:

final JProgressBar bar = new JProgressBar(0 , 100);  // 0 - min , 100 - max
bar.setStringPainted(true);
panel.add(bar);                   // panel is a JPanel's Obj reference variable

JButton butt = new JButton("start");
butt.addActionListener(){

    public void actionPerformed(){
        new Thread(new Runnable(){
            public void run(){
                int x = 0;
                while(x<=100) {
                    x++;
                    bar.setValue(x);        // Setting incremental values
                    if (x ==  100 ){
                        bar.setString("Its Done");   // End message
                        try{
                            Thread.sleep(200);
                        }catch(Exception ex){ }
                    }
                }).start();
            }
        });

比SwingWorker更好、更舒适和更容易 - mKorbel

3

2
这将显示进度条内的进度。
   progressBar.setStringPainted(true);

1
这显示了进度条内的进度百分比。
progressBar.setStringPainted(true);

0

我不确定你的[assumption]是否是你想要显示的字符串的一部分。如果是,完整的解决方案应该是这样的:

private static final String PROGRESS_MASK = "%d%% [assumption]";

public void someMethod() {
  ...

  progressBar.addChangeListener(new ChangeListener() {
    @Override
    void stateChanged(ChangeEvent e) {
      progressBar.setString(String.format(PROGRESS_MASK,
        progressBar.getValue()));
    }
  }

  progressBar.setStringPainted(true);
}

...因为您无法依赖默认字符串,该字符串仅显示百分比。


0

这里有两件事情需要注意:

1)您必须使用setStringPainted方法设置JProgressBar的paintString变量。您可以像这样做:

jprogressBar.setStringPainted(true)

你必须这样做,因为

isStringPainted()

方法应该返回true,如果进度条需要在上面显示值或进度的百分比。

2)现在,要使用你自定义的值进行自定义,请使用jprogressBar实例设置你的自定义值。

jprogressBar.setString(customString)

那么它应该正常工作。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接