I need to be able to programmatically change the font size of all the components in my Swing app. I cannot do this in the usual ways (with UIManager or putClientProperty) as I am using the Nimbus look and feel, so am using the following method to increase the font size of each component in my app individually...
private void enlargeFont(java.awt.Component c, float factor) {
c.setFont(c.getFont().deriveFont(c.getFont().getSize() * factor));
}
The problem I'm having is that I am using a TitledBorder on my JPanel and (predictably) passing my JPanel into the above method doesn't resize the JPanel's border title.
So is there any way I can change the font size on the border? (If I could get the text of the border, I could then create a new TitledBorder (using a bigger font) and then apply it with the JPanel's setBorder() method... but it doesn't seem possible to get the border text(?).
Does anyone have any suggestions on how to solve?
The font face, style and size in a Java Swing application is controlled via the LookAndFeel mechanism. You need to change the font in the look-and-feel if you want the change to apply to all Swing components of a given type. Have a look at the UIManager example.
We change the Font Size parameter to change the size of the JLabel Font. The use of the Font() function is shown below: Object. setFont(new Font("Font-Style", Font-Weight, Font Size));
The following worked for me:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
((javax.swing.border.TitledBorder) jPanel1.getBorder()).
setTitleFont(new Font("Arial", Font.ITALIC, 14));
jPanel1.repaint();
}
I've tested this in NetBeans 6.9.1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With