1

JProgressBarを使用して拡張し、現在の値とグラフィカルバーを印刷したいと思います。

プログレスバー

これを行う最良の方法は、paintComponentをオーバーライドすることだと思います。

@Override protected void paintComponent(Graphics g) {
// Let component paint first 
    super.paintComponent(g); 
// paint my contents next....
}

しかし、私にはわかりません...何かアドバイスはありますか?

4

2 に答える 2

8

独自のAPIを使用することをお勧めします。

public void setStringPainted(boolean b)

文字列Paintedプロパティの値を設定します。これは、進行状況バーが進行状況文字列をレンダリングするかどうかを決定します。デフォルトはfalseで、文字列が描画されないことを意味します。一部のルックアンドフィールは、進行状況文字列をサポートしない場合や、進行状況バーが確定モードの場合にのみサポートする場合があります。

public void setString(String s)

進行状況文字列の値を設定します。デフォルトでは、この文字列はnullであり、単純なパーセント文字列を使用する組み込みの動作を意味します。カスタム進行状況文字列を提供し、組み込みの動作に戻したい場合は、文字列をnullに戻します。進行状況文字列は、isStringPaintedメソッドがtrueを返した場合にのみ描画されます。

参照は常に良いことです。:)

実行中に値を編集できるようにするChangeListenerには、プログレスバーにアタッチすることを検討する必要があることに注意してください。

于 2010-06-18T14:26:09.403 に答える
1

ジャックの答えに基づく実用的なソリューション:

final JProgressBar pbar = ...
pbar.setStringPainted(true);
final NumberFormat nf = NumberFormat.getInstance();
nf.setGroupingUsed(true);
pbar.setString(nf.format(pbar.getValue()));             
pbar.addChangeListener(new ChangeListener()
{
    @Override public void stateChanged(ChangeEvent event) {
        pbar.setString(nf.format(pbar.getValue()));             
    }           
});
于 2010-06-18T14:34:16.403 に答える