JProgressBarの進捗文字列の字揃えを変更する
Total: 5256, Today: 1, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
JProgressBarの進捗文字列をJLabelにして、字揃えなどを変更します。
Screenshot

Advertisement
Source Code Examples
class StringAlignmentProgressBar extends JProgressBar {
private final JLabel label;
// private transient ChangeListener changeListener;
protected StringAlignmentProgressBar(BoundedRangeModel model, int horizAlignment) {
super(model);
label = new JLabel(" ", horizAlignment);
}
@Override public void updateUI() {
removeAll();
// removeChangeListener(changeListener);
super.updateUI();
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());
}
}
View in GitHub: Java, KotlinDescription
上記のサンプルでは、JProgressBarのレイアウトをBorderLayoutに変更し、水平方向の配置方法を設定したJLabelを追加して字揃えを変更しています。
JProgressBar#setStringPainted(true)を同時に使用すると2重に表示される- 進捗状況に応じた文字色の変化には対応していない
NimbusLookAndFeelを適用したJProgressBarにTitledBorderを設定するとデフォルトのJProgressBar#setStringPainted(true)で表示される進捗文字列の垂直位置がずれる場合がある