diff --git a/swing/src/net/sf/openrocket/gui/widgets/SelectColorButton.java b/swing/src/net/sf/openrocket/gui/widgets/SelectColorButton.java index 4ad1243d4..5881cdefb 100644 --- a/swing/src/net/sf/openrocket/gui/widgets/SelectColorButton.java +++ b/swing/src/net/sf/openrocket/gui/widgets/SelectColorButton.java @@ -5,38 +5,49 @@ import javax.swing.Action; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.UIManager; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import java.awt.Graphics; public class SelectColorButton extends JButton { public SelectColorButton() { + addChangeListenerSelectColor(); } public SelectColorButton(Icon icon) { super(icon); + addChangeListenerSelectColor(); } public SelectColorButton(String text) { super(text); + addChangeListenerSelectColor(); } public SelectColorButton(Action a) { super(a); + addChangeListenerSelectColor(); } public SelectColorButton(String text, Icon icon) { super(text, icon); + addChangeListenerSelectColor(); } - - - @Override - public void paint(Graphics g) { - if (getModel().isArmed()) { - setForeground(UIManager.getColor("Button.selectForeground")); - } - else { - setForeground(UIManager.getColor("Button.foreground")); - } - super.paint(g); + private void addChangeListenerSelectColor() { + addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + if (UIManager.getColor("Button.selectForeground") == null + || UIManager.getColor("Button.foreground") == null) + return; + if (getModel().isArmed()) { + setForeground(UIManager.getColor("Button.selectForeground")); + } + else { + setForeground(UIManager.getColor("Button.foreground")); + } + } + }); } } diff --git a/swing/src/net/sf/openrocket/gui/widgets/SelectColorToggleButton.java b/swing/src/net/sf/openrocket/gui/widgets/SelectColorToggleButton.java index 96f2cceaa..970b8b15d 100644 --- a/swing/src/net/sf/openrocket/gui/widgets/SelectColorToggleButton.java +++ b/swing/src/net/sf/openrocket/gui/widgets/SelectColorToggleButton.java @@ -4,7 +4,12 @@ import javax.swing.JToggleButton; import javax.swing.Action; import javax.swing.Icon; import javax.swing.UIManager; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; import java.awt.Graphics; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseEvent; /** * This class is a replacement for the standard JToggleButton. Its purpose is to be able @@ -15,43 +20,57 @@ import java.awt.Graphics; public class SelectColorToggleButton extends JToggleButton { public SelectColorToggleButton(Action a) { super(a); + addChangeListenerSelectColor(); } public SelectColorToggleButton(String text) { super(text); + addChangeListenerSelectColor(); } public SelectColorToggleButton() { + addChangeListenerSelectColor(); } public SelectColorToggleButton(Icon icon) { super(icon); + addChangeListenerSelectColor(); } public SelectColorToggleButton(Icon icon, boolean selected) { super(icon, selected); + addChangeListenerSelectColor(); } public SelectColorToggleButton(String text, boolean selected) { super(text, selected); + addChangeListenerSelectColor(); } public SelectColorToggleButton(String text, Icon icon) { super(text, icon); + addChangeListenerSelectColor(); } public SelectColorToggleButton(String text, Icon icon, boolean selected) { super(text, icon, selected); + addChangeListenerSelectColor(); } - @Override - public void paint(Graphics g) { - if (isSelected()) { - setForeground(UIManager.getColor("ToggleButton.selectForeground")); - } - else { - setForeground(UIManager.getColor("ToggleButton.foreground")); - } - super.paint(g); + private void addChangeListenerSelectColor() { + addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + if (UIManager.getColor("ToggleButton.selectForeground") == null + || UIManager.getColor("ToggleButton.foreground") == null) + return; + if (isSelected()) { + setForeground(UIManager.getColor("ToggleButton.selectForeground")); + } + else { + setForeground(UIManager.getColor("ToggleButton.foreground")); + } + } + }); } }