简体   繁体   中英

Java Swing - How to change the font size on a JPanel's TitledBorder?

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 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 在此输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM