Java Swing - 如何更改 JPanel 的 TitledBorder 上的字体大小?

Posted

技术标签:

【中文标题】Java Swing - 如何更改 JPanel 的 TitledBorder 上的字体大小?【英文标题】:Java Swing - How to change the font size on a JPanel's TitledBorder? 【发布时间】:2013-02-22 00:27:56 【问题描述】:

我需要能够以编程方式更改我的 Swing 应用程序中所有组件的字体大小。我无法以通常的方式(使用 UIManager 或 putClientProperty)执行此操作,因为我正在使用 Nimbus 外观,因此我使用以下方法来分别增加我的应用程序中每个组件的字体大小...

private void enlargeFont(java.awt.Component c, float factor) 
    c.setFont(c.getFont().deriveFont(c.getFont().getSize() * factor));

我遇到的问题是我在我的 JPanel 上使用了 TitledBorder 并且(可以预见地)将我的 JPanel 传递给上述方法不会调整 JPanel 的边框标题的大小。

那么有什么办法可以改变边框上的字体大小吗? (如果我能得到边框的文本,我可以创建一个新的 TitledBorder (使用更大的字体),然后使用 JPanel 的 setBorder() 方法应用它......但似乎不可能得到边框文本(?)。

有人对如何解决有什么建议吗?

【问题讨论】:

您需要revalidaterepaint 容器,大概从根窗格开始。你能发布一些示例代码吗 【参考方案1】:

以下内容对我有用:

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) 
    ((javax.swing.border.TitledBorder) jPanel1.getBorder()).
        setTitleFont(new Font("Arial", Font.ITALIC, 14));

    jPanel1.repaint();

我已经在 NetBeans 6.9.1 中对此进行了测试

【讨论】:

谢谢,有没有类似的方法可以在 jTabbedPane 中设置标签标题的字体?

以上是关于Java Swing - 如何更改 JPanel 的 TitledBorder 上的字体大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何从另一个子 JPanel(Java Swing)中的输入触发一个子 JPanel 中的操作?

Java Swing关于界面刷新的问题!!

如何在 JPanel java swing 中移动标签

Java Swing 在单击我要删除的 jpanel 中存在的 Jbutton 时删除 Jpanel

Java / Swing:从JPanel内部获取Window / JFrame

java swing编程问题:一个jframe中添加一个jpanel后,为jpanel添加一个滚动条,当jpanel中内容过多时滑动