I am trying to create a Swing panel whose elements have a different font size than other swing applications. Initially, using setFont for multiple components was not a problem. Now I have several components (and all their subcomponents), so this solution is impractical.
I was looking to change the default user interface properties for swing components. What I found mainly uses UIManager, which modifies properties around the world. This does not work for me because I want to keep the current font settings for all other panels.
At the moment (and since I donβt like to publish without trying to do something first), I have an algorithm like this:
public static void fixFont(Container c) { c.setFont(c.getFont().deriveFont(10.0f)); Component[] comp = c.getComponents(); for (int i=0;i<comp.length;++i) { if (comp[i] instanceof Container) { fixFont((Container) comp[i]); } else { comp[i].setFont(comp[i].getFont().deriveFont(10.0f)); } } }
The problem is that:
- it does not include certain rotation elements, such as its boundary.
- I have to call this function when I dynamically add other components
Question: Is there any other way to change the font properties of the Swing panel and all its components, elements, etc. (i.e. everything in the panel)?
Thanks for your ideas.
java swing
Yuppie network
source share