Swing/ProgressStringAlignment のバックアップの現在との差分(No.3)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/ProgressStringAlignment へ行く。
- 1 (2012-11-17 (土) 03:48:18)
- 2 (2012-12-12 (水) 19:12:52)
- 3 (2013-06-10 (月) 14:26:34)
- 4 (2013-08-17 (土) 15:44:13)
- 5 (2015-03-08 (日) 18:52:37)
- 6 (2016-06-01 (水) 18:58:54)
- 7 (2017-08-22 (火) 16:10:59)
- 8 (2018-08-31 (金) 17:40:25)
- 9 (2020-08-25 (火) 15:57:47)
- 10 (2022-02-10 (木) 00:31:16)
- 11 (2023-08-28 (月) 18:42:05)
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JProgressBarの進捗文字列の字揃えを変更する #navi(../) #tags(JProgressBar, JLabel, BorderLayout, Alignment) RIGHT:Posted by &author(aterai); at 2012-04-02 *JProgressBarの進捗文字列の字揃えを変更する [#na76a7f3] ``JProgressBar``の進捗文字列を``JLabel``にして、字揃えなどを変更します。 --- category: swing folder: ProgressStringAlignment title: JProgressBarの進捗文字列の字揃えを変更する tags: [JProgressBar, JLabel, BorderLayout, Alignment] author: aterai pubdate: 2012-04-02T16:48:11+09:00 description: JProgressBarの進捗文字列をJLabelにして、字揃えなどを変更します。 image: https://lh5.googleusercontent.com/-zRMPjXT7do4/T3lYdJUnilI/AAAAAAAABLA/kcpMYSYoklM/s800/ProgressStringAlignment.png --- * 概要 [#summary] `JProgressBar`の進捗文字列を`JLabel`にして、字揃えなどを変更します。 -&jnlp; -&jar; -&zip; #download(https://lh5.googleusercontent.com/-zRMPjXT7do4/T3lYdJUnilI/AAAAAAAABLA/kcpMYSYoklM/s800/ProgressStringAlignment.png) //#screenshot #ref(https://lh5.googleusercontent.com/-zRMPjXT7do4/T3lYdJUnilI/AAAAAAAABLA/kcpMYSYoklM/s800/ProgressStringAlignment.png) * サンプルコード [#sourcecode] #code(link){{ class StringAlignmentProgressBar extends JProgressBar { private final JLabel label; // private transient ChangeListener changeListener; **サンプルコード [#ue454eec] #code(link){{ JProgressBar bar = new JProgressBar(model) { private final JLabel label = new JLabel(getString(), halign); private final ChangeListener changeListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { label.setText(getString()); } }; protected StringAlignmentProgressBar(BoundedRangeModel model, int horizAlignment) { super(model); label = new JLabel(" ", horizAlignment); } @Override public void updateUI() { removeChangeListener(changeListener); removeAll(); // removeChangeListener(changeListener); super.updateUI(); EventQueue.invokeLater(new Runnable() { @Override public void run() { setLayout(new BorderLayout()); addChangeListener(changeListener); add(label); label.setBorder(BorderFactory.createEmptyBorder(0,4,0,4)); } setLayout(new BorderLayout()); // changeListener = e -> label.setText(getString()); // addChangeListener(changeListener); EventQueue.invokeLater(() -> { add(label); label.setBorder(BorderFactory.createEmptyBorder(0, 4, 0, 4)); }); } }; @Override protected ChangeListener createChangeListener() { return e -> label.setText(getString()); } } }} **解説 [#q401be3b] 上記のサンプルでは、``JProgressBar``のレイアウトを``BorderLayout``に変更し、水平方向の配置方法を設定した``JLabel``を追加することで、字揃えを変更しています。 * 解説 [#explanation] 上記のサンプルでは、`JProgressBar`のレイアウトを`BorderLayout`に変更し、水平方向の配置方法を設定した`JLabel`を追加して字揃えを変更しています。 - 注: -- ``JProgressBar#setStringPainted(true)``を同時に使用すると、二重に表示される -- 進捗状況に応じた文字色の変化には対応していない -- ``Nimbus LnF``の場合で、``TitleBorder``などを直接``JProgressBar``に設定しても、進捗文字列の垂直位置がずれない - `JProgressBar#setStringPainted(true)`を同時に使用すると`2`重に表示される - 進捗状況に応じた文字色の変化には対応していない - `NimbusLookAndFeel`を適用した`JProgressBar`に`TitledBorder`を設定するとデフォルトの`JProgressBar#setStringPainted(true)`で表示される進捗文字列の垂直位置がずれる場合がある //**参考リンク **コメント [#ma2d4f78] * 参考リンク [#reference] - [[JProgressBarの文字列をJLayerを使って表示する>Swing/ProgressStringLayer]] * コメント [#comment] #comment #comment