Swing/RadioButtonTextColor のバックアップの現在との差分(No.5)
TITLE:JRadioButtonの文字色を変更
Posted by aterai at 2009-01-05
JRadioButtonの文字色を変更
JRadioButtonの文字色やアイコンを変更します。- category: swing folder: RadioButtonTextColor title: JRadioButtonの文字色を変更 tags: [JRadioButton, Icon] author: aterai pubdate: 2009-01-05T12:42:32+09:00 description: JRadioButtonの状態の変化に応じて、その文字色やアイコンを変更します。 image:
概要
JRadioButton
の状態の変化に応じて、その文字色やアイコンを変更します。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
サンプルコード
サンプルコード
class ColorRadioButton extends JRadioButton {
private static final Color defaultColor = Color.BLACK;
private static final Color pressedColor = Color.GREEN;
private static final Color defaultColor = Color.BLACK;
private static final Color pressedColor = Color.GREEN;
private static final Color selectedColor = Color.RED;
private static final Color rolloverColor = Color.BLUE;
private static final int iconSize = 16;
@Override
protected void fireStateChanged() {
#spanadd
#spanend
@Override protected void fireStateChanged() {
ButtonModel model = getModel();
if(!model.isEnabled()) {
if (!model.isEnabled()) {
setForeground(Color.GRAY);
}else if(model.isPressed() && model.isArmed()) {
} else if (model.isPressed() && model.isArmed()) {
setForeground(pressedColor);
}else if(model.isSelected()) {
} else if (model.isSelected()) {
setForeground(selectedColor);
}else if(isRolloverEnabled() && model.isRollover()) {
} else if (isRolloverEnabled() && model.isRollover()) {
setForeground(rolloverColor);
}else{
} else {
setForeground(defaultColor);
}
super.fireStateChanged();
};
#spandel
//...
#spanend
}
// ...
View in GitHub: Java, Kotlin解説
上記のサンプルでは、JRadioButtonが選択やロールオーバーした時の文字色を、マウスリスナではなく、fireStateChangedメソッドをオーバーライドして変更しています。解説
上記のサンプルでは、JRadioButton
が選択やロールオーバーした時の文字色をマウスリスナーではなくAbstractButton#fireStateChanged()
メソッドをオーバーライドして変更しています。
アイコンは、setPressedIcon、setSelectedIcon、setRolloverIconメソッドなどが用意されているので、これを使用しています。
- - 以下のような、ChangeListenerを使用する方法もあります。
- 文字色ではなくアイコンを変更する場合は
setPressedIcon(...)
、setSelectedIcon(...)
、setRolloverIcon(...)
メソッドが使用可能 - 以下のような
ChangeListener
を使用する方法もある#spandel radioButton.addChangeListener(new javax.swing.event.ChangeListener() { #spanend public void stateChanged(javax.swing.event.ChangeEvent e) { #spanadd radioButton.addChangeListener(new ChangeListener() { #spanend @Override public void stateChanged(ChangeEvent e) { ButtonModel model = radioButton.getModel(); if(!model.isEnabled()) { if (!model.isEnabled()) { radioButton.setForeground(Color.GRAY); }else if(model.isPressed() && model.isArmed()) { } else if (model.isPressed() && model.isArmed()) { radioButton.setForeground(pressedColor); }else if(model.isSelected()) { } else if (model.isSelected()) { radioButton.setForeground(selectedColor); }else if(isRolloverEnabled() && model.isRollover()) { } else if (isRolloverEnabled() && model.isRollover()) { radioButton.setForeground(rolloverColor); }else{ } else { radioButton.setForeground(defaultColor); } } });
コメント
- スクリーンショットのタイトルボーダーが入れ替わっていたのを修正。 -- aterai
参考リンク
- AbstractButton#fireStateChanged() (Java Platform SE 8)
- ButtonModel (Java Platform SE 8)
- ChangeListener (Java Platform SE 8)