Don't forget, with M we have all of Java at our fingertips with just a few keystrokes. So why don't you use Java Swing, which is a professional UI framework that runs on hundreds of millions of devices.

I have ShowProgressBar and DestroyProgressBar in my init.m, because I use them frequently.
Needs["JLink`"]
ReinstallJava[]
ShowProgressBar[title_String: "Computation Progress",caption_String: "Percent complete:",percent_Integer: 0]:=JavaBlock[Module[{frame,panel,label,bar},InstallJava[];
bar=JavaNew["javax.swing.JProgressBar"];
frame=JavaNew["javax.swing.JFrame",title];
frame@setSize[300,110];
frame@setResizable[False];
frame@setLocation[400,400];
panel=JavaNew["javax.swing.JPanel"];
panel@setLayout[Null];
frame@getContentPane[]@add[panel];
label=JavaNew["javax.swing.JLabel",caption];
label@setBounds[20,10,260,20];
panel@add[label];
bar@setBounds[20,40,260,30];
bar@setMinimum[0];
bar@setMaximum[100];
bar@setValue[percent];
bar@setStringPainted[True];
panel@add[bar];
JavaShow[frame];
KeepJavaObject[bar,label];
{bar,label}]];
DestroyProgressBar[bar_?JavaObjectQ]:=JavaBlock[LoadJavaClass["javax.swing.SwingUtilities"];
SwingUtilities`windowForComponent[bar]@dispose[];
ReleaseJavaObject[bar]];
LoadJavaClass["javax.swing.UIManager"];
UIManager`setLookAndFeel["com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"];
{mybar,mylabel}=ShowProgressBar[];
([email protected];If[#==0,label="Ping",If[#==100,label="Pong"]];mylabel@setText[label];mybar@setValue[#])&/@With[{t=Range[0,100]},Join[t,Reverse@t,t,Reverse@t,t]];
DestroyProgressBar@mybar;
You can modify the Swing widgets any way you like, you can change the color to whatever you like, the backgrounds, the texts, the fonts, the sizes, the margins, etc., but for me, just changing the look-and-feel to Nimbus is doing it (default is Ocean, not too ugly either). This solution also has the advantage that you get a new window, which you can drag anywhere you want on your screens, you are not limited to having to see the progress bar in the M f/e at a fixed cell location. You can set the "Always on top" property, transparency, etc., because it's a WINDOW, and not just a WIDGET in the M f/e. I generally prefer having something like this in a new window that I can move away, otherwise I'd have to hunt down the location of the progress bar in the f/e to see updated values, i. e. scroll around until I found my cell. With longer computations I'd want to continue on something else in the M f/e and STILL be able to see the progress immediately, without hunting down cell locations manually. But that's a matter of personal preference. Swing gives you incredible flexibility (and plasticity and hardware acceleration -- because it's based on Java2D, etc.), and not just for widgets, but also for window management. And with JLink you can harness all that directly from your M session.
EDIT:
If it's important that it's really red, you can use one of various ways to set that. You could a) use the NimbusRed that is predefined and goes along with the Nimbus look-and-feel, b) set Red as the RGB value 255,0,0, or c) use the static constant red (or RED) from awt.
a) NimbusRed

LoadJavaClass["javax.swing.UIManager"];
UIManager`setLookAndFeel["com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel"];
With[{defaults=UIManager`getLookAndFeelDefaults[]},
defaults@put[MakeJavaObject@"nimbusOrange",defaults@get[MakeJavaObject@"nimbusRed"]]];
{mybar,mylabel}=ShowProgressBar[];
([email protected];If[#==0,label="Ping",If[#==100,label="Pong"]];mylabel@setText[label];mybar@setValue[#])&/@With[{t=Range[0,100]},Join[t,Reverse@t,t,Reverse@t,t]];
DestroyProgressBar@mybar;
A list of Nimbus defaults is at Nimbus Defaults
b) Red with RGB 255,0,0

Instead of
defaults@get[MakeJavaObject@"nimbusRed"]
use
JavaNew["java.awt.Color",255,0,0]
c) use red or RED as awt constant:
use
Color`red
but you also have to load the Color class first:
LoadJavaClass["java.awt.Color",StaticsVisible->True];
Note that the entire look-and-feel makes further modifications to the display, due to plasticity / 3D effects, shading, etc. Pure red in Nimbus looks like Fruit Punch to me. But you also don't have to use Nimbus. You can use Motif, Metal, Ocean, etc., and there's a ton of third-party look-and-feels.
ProgressIndicator
haveRed
color,and some times haveGreen
color.and also for every time,ProgressIndicator
range will change.then how can I solve this. $\endgroup$