JProgressBarの進捗方向を右から左に変更する
Total: 3211, Today: 2, Yesterday: 2
Posted by aterai at
Last-modified:
Summary
JProgressBarのインジケータが通常とは逆方向に増加するよう変更します。
Screenshot

Advertisement
Source Code Examples
JProgressBar progress = new JProgressBar(m);
progress.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
// progress.setStringPainted(true);
// progress.setOrientation(SwingConstants.VERTICAL);
View in GitHub: Java, KotlinDescription
Orientation:SwingConstants.HORIZONTAL- 水平
JProgressBarの場合、JProgressBar#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)で右から左に進捗方向を変更可能 JProgressBarにはJSlider#setInverted(boolean)のようなメソッドは用意されていないJProgressBar#setStringPainted(true)で進捗文字列を表示した場合、JProgressBar#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)に設定していても%100ではなく100%と表示される
- 水平
Orientation:SwingConstants.VERTICAL- 左から
1番目: デフォルトの垂直JProgressBar - 左から
2番目: デフォルトの進捗文字列を表示した垂直JProgressBar - 左から
3番目:JProgressBar#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)を設定した垂直JProgressBar- 上から下には進捗方向を変更不可でこの設定は無視される
- 右から
2番目:JProgressBar#paintComponent(...)をオーバーライドして表示を上下反転した垂直JProgressBar- 進捗文字列も上下反転してしまう
JProgressBar progress7 = new JProgressBar(m) { @Override protected void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g.create(); g2.scale(1, -1); g2.translate(0, -getHeight()); super.paintComponent(g2); g2.dispose(); } }; progress7.setOrientation(SwingConstants.VERTICAL); progress7.setStringPainted(true);
- 進捗文字列も上下反転してしまう
- 左から
- 右から
1番目:JLayerで表示を上下反転した垂直JProgressBarJProgressBar#paintComponent(...)をオーバーライドした場合と同様に進捗文字列も上下反転してしまう- JProgressBarの文字列をJLayerを使って表示するのように別の
JLabelなどで進捗文字列を描画すれば回避可能
- その他
- 以下のようにノブやメモリを非表示、かつ操作不可に設定し
JSlider#setInverted(true)で描画を反転したJSliderで代用する方法もある
- 以下のようにノブやメモリを非表示、かつ操作不可に設定し