On 8/18/2011 11:39 AM, Knute Johnson wrote:
I assume what I'm trying to find is in AbstractButton somewhere. I need
a disabled JMenuItem with brighter text. One can set the background of a
disabled JMenuItem but not the foreground.
I don't see anyway to differentiate the foreground color of a menu item
when it's enabled vs when it's disabled. You could use a change
listener, which will fire whenever the state is changed from enabled to
disabled or vice-versa.
JMenuItem jMenuItem2 = ...
jMenuItem2.addChangeListener(new javax.swing.event.ChangeListener()
{
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jMenuItem2StateChanged(evt);
}
});
...
private void jMenuItem2StateChanged(
javax.swing.event.ChangeEvent evt)
{
System.out.println( "jMenuItem2StateChanged - "+ evt );
JMenuItem jm = ((JMenuItem)evt.getSource());
System.out.println( "Enabled: "+jm.isEnabled() );
if( jm.isEnabled() ) {
jm.setForeground( Color.red );
} else {
jm.setForeground( Color.yellow );
}
}
This seemed to work reliably for me, changing the menu text color from
red when enabled and yellow ("brighter") when disabled. You could
encapsulate this into a new kind of JMenuItem if you need it really
frequently, I suppose.
Thanks for that but apparently I asked the wrong question. Why can't I
1.7 on Windows XP. It may be something different with the LookAndFeel.