2013-03-06 3 views
3

Мне нужно иметь возможность программно изменять размер шрифта всех компонентов в моем приложении Swing. Я не могу сделать это обычным способом (с помощью UIManager или putClientProperty), поскольку я использую внешний вид Nimbus, поэтому я использую следующий метод для увеличения размера шрифта каждого компонента в моем приложении отдельно ...Java Swing - Как изменить размер шрифта на TitledBorder JPanel?

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

Проблема, с которой я сталкиваюсь, заключается в том, что я использую TitledBorder на моем JPanel и (предсказуемо), передавая мой JPanel в указанный выше метод, не изменяет размер заголовка границы JPanel.

Так можно ли изменить размер шрифта на границе? (Если бы я мог получить текст границы, я мог бы затем создать новый TitledBorder (используя более крупный шрифт), а затем применить его с помощью метода setBorder() JPanel ... но не представляется возможным получить текст границы

кто-нибудь есть какие-либо предложения о том, как решить

+0

Вы необходимо «revalidate» и «перекрасить» контейнеры, предположительно начиная с корневой панели. C вы отправляете пример кода – MadProgrammer

ответ

11

следующие работал для меня (?):.?

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 enter image description here

+0

Отлично, спасибо! –

+0

спасибо, Есть ли подобный подход для установки шрифта для заголовка вкладки в jTabbedPane? –

Смежные вопросы