Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Interested in getting your voice heard by members of the Developer Marketing team at Oracle? Check out this post for AppDev or this post for AI focus group information.

Should UIManager fire propertyChangeEvents here?

843807Jan 27 2010 — edited Feb 11 2010
I have a java desktop application that behaves badly after the user changes the display properties under MS-Windows.
The situation is this:
Start the application.
Right-click on the Windows desktop, bring up the Display Properties dialog, and change the theme, color scheme, font size, etc. Click apply. A tree in my app that extends JTree now paints incorrectly. There are probably other issues as well, but this is an obvious starting point.

After some investigating, I came to the conclusion that I need to call:
SwingUtilities.updateComponentTreeUI(component);
when things like this change, and the way to know that things like this have changed is to register a PropertyChangeListener on the UIManager.

So to start out, I created a simple test app, with this code in the constructor:

UIManager.addPropertyChangeListener(new PropertyChangeListener()
{
public void propertyChange( PropertyChangeEvent e )
{
System.out.println( "UIManager propertyChange " + e.getPropertyName());
}
});

I then ran the app (in NetBeans), changed display properties in Windows, and got nothing printed out.
However, if in response to a button push, I change the LookAndFeel programmatically:

if (!flipFlop_)
{
UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());
flipFlop_ = true;
}
else
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
flipFlop_ = false;
}

When I do that, I see this printed out:

UIManager propertyChange lookAndFeel

But I need to detect that UI settings have changed due to actions outside of my app, maybe outside of the JRE? Shouldn't the UIManager be firing something here? Or is there some other static object that I need to register with? I see that a PropertyChangeListener can be added to the Toolkit object, but it requires the name of the property, and there may be many properties and I don't know the names of them.

Comments

fac586

helpme_helpyou wrote:

I created select list with the data I have. But, i get two empty rows (selection) before the actual names i want to get shown. Can anyone help me with it, please?

What are the settings for the Display Extra Values and Display Null Values properties on the select list item? (Read the online help for these properties while you're there).

3474044

They were YES, but I just changed them to NO. Even tho, i still have one empty selection. (one of them removed already and thanks for helping)

Capture.PNGCapture1.PNG

fac586

helpme_helpyou wrote:

They were YES, but I just changed them to NO. Even tho, i still have one empty selection. (one of them removed already and thanks for helping)

So what's in the data? Run the LOV query in SQL Workshop.

3474044

how can i do that? i have never done that and i am new on APEX.

thanks for your help!

fac586

helpme_helpyou wrote:

how can i do that? i have never done that and i am new on APEX.

3474044

Thanks for the steps! I got four rows which includes one extra (empty row). How can i avoid that one? Please, see the following screenshot for the results.

Capture.PNG

3474044

I found the problem. I added additional column without putting Location type into it. I think it causes it to show one empty selection.

Thanks for helping

fac586

helpme_helpyou wrote:

Thanks for the steps! I got four rows which includes one extra (empty row). How can i avoid that one?

I have no idea because I have no knowledge of the data model. However, the LOV query indicates that the data model is not properly normalized, providing further evidence that it is probably wrong.

3474044
Answer

i found the problem. It should be there (the one of the empty selection), because the user also may choose nothing for that which required empty selection. can you please help me with another question which i just shared 5-10 mins ago? thanks again for helping!

Marked as Answer by 3474044 · Sep 27 2020
1 - 9
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Mar 11 2010
Added on Jan 27 2010
5 comments
352 views