Link to home
Start Free TrialLog in
Avatar of guidway
guidwayFlag for United States of America

asked on

using color in Java

I am creating a project where I want to have an interface that the user can go into and change the color of any component that they want in Java (ex. JPanel, JButton, JCheckbox, JSlider, etc...) and have it cascade through all the interfaces in my project until the user changes the colors again. I believe I have to use the UIManager for this, but I don't know anything much about how to use it or what keys it takes to activate various components or even if that is the right approach to this. Can someone explain to me the process of doing this or guide me the right way to make this work. Hopefully this makes sense what I'm asking. Thanks for any help,

guidway
Avatar of guidway
guidway
Flag of United States of America image

ASKER

If what I'm asking is too much for the amount of points I put in the question then let me know.

guidway
Avatar of guidway

ASKER

I can increase points if that isn't enough.
Avatar of Mick Barry
Yes UIManager is the way to go.

eg. to set label foreground colour:

UIManager.put("Label.foreground", new ColorUIResource(0x00, 0x7f, 0x7f));
Avatar of guidway

ASKER

thanks objects,

I thought this was the best way. The problem is that I can't find all the components that can be set with it. Is there a list of all the UIManager keys that can be set? That's really what I need. I'm having trouble also understanding how it will recognize the color change for other interfaces I create. Is there something I have to do to make other interfaces see the change? I'm increasing point to 100 because I'll probably have more questions to ask than this. Thanks for the response,

guidway
The UIManager keys depend on the particular L&F you are using.

What do you mean by other interfaces.
ASKER CERTIFIED SOLUTION
Avatar of Mick Barry
Mick Barry
Flag of Australia image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of guidway

ASKER

That's what I was looking for. Thanks objects! Now the question about the interfaces. Here's what I meant. I create this interface that allows users to change colors for any component. Now when I exit out of this GUI, and go to another part of my program (project)and open up another GUI I want this same component color changes to be part of it also. What I'm asking is "Is there any specific things I need to do to make the computer recognize the settings once they're changed in UIManager. Or does UIManager automatically update all other interfaces in my project? At one point, I was uing SwingUtilities.UpdateComponentTreeUI(this) to update look and feel settings after I had changed them. Is this code relevant for this or is there other code I need to use to view the changes to the color? Again, I'm not familiar with doing this so I really need it broken down so I can understand all that is involved in the process. I'm pretty much "in the dark" at the moment as to how all this works with the color and all. I do appreciate the time and the more I understand about all this the more points I'll add. This has been bothering me for a while now because I kind of understand some of it but I want a full understanding of UIManager and what needs to be done to make it work completely like it should be used. Thanks again,

guidway
Any changes you make are only valid for the current execution and are lost when you exit and start another app.
To do what you require your best bet would be to store your defaults in a properties file and load them upon startup. Then when a value is changed you'll need to update the properties file.

Avatar of guidway

ASKER

A little misunderstanding. I know what you are referring to. That's not what I meant. I'm not exiting my application, I'm just going to another part of it. In other words I'm closing that GUI window and clicking on something else on my main menu of my project. I'm still in the project and it is still in execution, but what I'm trying to figure out is does it know how to automatically update the colors in my other GUI's I've created or do I have to tell it to update them manually. This is confusing to me. I understand about setting it up in UIManager (using the put statement, but what happens after that? Do I have to tell it to refresh the changes or something? Or does it automatically do it for me?

guidway
Avatar of guidway

ASKER

I'll check any more responses in the morning. It's 12 A.M. over here and I have to work in the morning so I'll check back then. Thanks for the help.

guidway
When a component is created it uses the existing values stored in UIManager.
If you changes the values in UIManager after the GUI has been created and want the changes to take effect for existing components you need to call updateComponentTreeUI() for the changes to take effect.

Avatar of guidway

ASKER

objects,

thanks again for the help. I might have more questions in the next few weeks related to this, but I'll go ahead and close it for the sake of cleanup. Thanks again,

guidway
No worries, thanks for the points :)

http://www.objects.com.au/staff/mick
Brainbench MVP for Java 1
http://www.brainbench.com