• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JProgressBarの進捗文字列の字揃えを変更する
#navi(../)
#tags(JProgressBar, JLabel, BorderLayout, Alignment)
RIGHT:Posted by &author(aterai); at 2012-04-02
*JProgressBarの進捗文字列の字揃えを変更する [#na76a7f3]
``JProgressBar``の進捗文字列を``JLabel``にして、字揃えなどを変更します。
---
title: JProgressBarの進捗文字列の字揃えを変更する
tags: [JProgressBar, JLabel, BorderLayout, Alignment]
author: aterai
pubdate: 2012-04-02T16:48:11+09:00
description: JProgressBarの進捗文字列をJLabelにして、字揃えなどを変更します。
---
* 概要 [#na76a7f3]
`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)

**サンプルコード [#ue454eec]
* サンプルコード [#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());
    }
  };
  @Override public void updateUI() {
    removeChangeListener(changeListener);
    removeAll();
    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));
      }
    });
  }
};
}}

**解説 [#q401be3b]
上記のサンプルでは、``JProgressBar``のレイアウトを``BorderLayout``に変更し、水平方向の配置方法を設定した``JLabel``を追加することで、字揃えを変更しています。
* 解説 [#q401be3b]
上記のサンプルでは、`JProgressBar`のレイアウトを`BorderLayout`に変更し、水平方向の配置方法を設定した`JLabel`を追加することで、字揃えを変更しています。

- 注:
-- ``JProgressBar#setStringPainted(true)``を同時に使用すると、二重に表示される
-- `JProgressBar#setStringPainted(true)`を同時に使用すると、二重に表示される
-- 進捗状況に応じた文字色の変化には対応していない
-- ``Nimbus LnF``の場合で、``TitleBorder``などを直接``JProgressBar``に設定しても、進捗文字列の垂直位置がずれない
-- `NimbusLookAndFeel`の場合で、`TitleBorder`などを直接`JProgressBar`に設定しても、進捗文字列の垂直位置がずれない

**参考リンク [#vdbcf27f]
* 参考リンク [#vdbcf27f]
- [[JProgressBarの文字列をJLayerを使って表示する>Swing/ProgressStringLayer]]

**コメント [#ma2d4f78]
* コメント [#ma2d4f78]
#comment
#comment