Swing/InvertedProgressBar のバックアップ(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/InvertedProgressBar へ行く。
- 1 (2017-10-16 (月) 16:38:13)
- 2 (2018-02-15 (木) 14:23:42)
- 3 (2019-04-26 (金) 18:19:22)
- 4 (2021-02-03 (水) 01:11:14)
- 5 (2024-03-02 (土) 18:59:14)
- category: swing folder: InvertedProgressBar title: JProgressBarの進捗方向を右から左に変更する tags: [JProgressBar] author: aterai pubdate: 2017-10-16T14:31:34+09:00 description: JProgressBarのインジケータが通常とは逆方向に増加するよう変更します。 image: https://drive.google.com/uc?id=1XzVC-95p_4o-iBXzUkOONJ1lHT6qmjImDQ
概要
JProgressBar
のインジケータが通常とは逆方向に増加するよう変更します。
Screenshot
Advertisement
サンプルコード
JProgressBar progress = new JProgressBar(m);
progress.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
//progress.setStringPainted(true);
//progress.setOrientation(SwingConstants.VERTICAL);
View in GitHub: Java, Kotlin解説
Orientation
:SwingConstants.HORIZONTAL
- 水平スクロールバーの場合、
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
番目: デフォルトの垂直スクロールバー - 左から
2
番目: デフォルトの進捗文字列を表示した垂直スクロールバー - 左から
3
番目:JProgressBar#setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT)
を設定した垂直スクロールバー- 上から下には進捗方向を変更不可で、この設定は無視される
- 右から
2
番目:JProgressBar#paintComponent(...)
をオーバーライドして表示を上下反転した垂直スクロールバー- 進捗文字列も上下反転してしまう
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
で表示を上下反転した垂直スクロールバーJProgressBar#paintComponent(...)
をオーバーライドした場合と同様に進捗文字列も上下反転してしまう- JProgressBarの文字列をJLayerを使って表示するのように、別の
JLabel
などで進捗文字列を描画すれば回避可能
- その他
- 以下のようにノブやメモリを非表示、かつ操作不可に設定し、
JSlider#setInverted(true)
で描画を反転した、JSlider
で代用する方法もある
- 以下のようにノブやメモリを非表示、かつ操作不可に設定し、