我想爲JPanel
中的所有組件設置特定的字體,但我更喜歡這個問題仍然更一般,並且不限於JPanel。如何將字體設置爲容器中的組件列表(JFrame或JPanel)?爲所有組件設置相同的字體Java
7
A
回答
3
爲您想要更改的組件設置UIManager
的字體值。例如,你可以通過執行設定用於標籤的字體:
Font labelFont = ... ;
UIManager.put("Label.font", labelFont);
注意,不同的外觀和感覺(L & F)可能對UIManager
類不同的屬性,因此,如果您從一個L & F開關到另一個,你可能會有問題。
8
-您可以使用UIManager
做到這一點....
如:
public class FrameTest {
public static void setUIFont(FontUIResource f) {
Enumeration keys = UIManager.getDefaults().keys();
while (keys.hasMoreElements()) {
Object key = keys.nextElement();
Object value = UIManager.get(key);
if (value instanceof FontUIResource) {
FontUIResource orig = (FontUIResource) value;
Font font = new Font(f.getFontName(), orig.getStyle(), f.getSize());
UIManager.put(key, new FontUIResource(font));
}
}
}
public static void main(String[] args) throws InterruptedException {
setUIFont(new FontUIResource(new Font("Arial", 0, 20)));
JFrame f = new JFrame("Demo");
f.getContentPane().setLayout(new BorderLayout());
JPanel p = new JPanel();
p.add(new JLabel("hello"));
p.setBorder(BorderFactory.createTitledBorder("Test Title"));
f.add(p);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300, 300);
f.setVisible(true);
}
}
+0
如果我使用UIManager,我會在整個應用程序中將字體更改爲組件,但我不會只在特定的「JFrame」或「JPanel」中更改它。謝謝 – Luca
16
這裏有一個簡單的方法,使您可以指定字體,以在整個組件樹任何容器(或只是一個簡單的組件,無所謂):
public static void changeFont (Component component, Font font)
{
component.setFont (font);
if (component instanceof Container)
{
for (Component child : ((Container) component).getComponents())
{
changeFont (child, font);
}
}
}
只需傳遞y我們的面板和特定的字體到這個方法,你會得到所有的孩子重構。
+0
真棒,它的工作很棒,我已經改變了你的代碼這樣,並幫助我,我在答覆中發佈代碼 –
2
從Mikle穀物啓發回答 我用他的代碼,通過讓老字號
public static void changeFont(Component component, int fontSize) {
Font f = component.getFont();
component.setFont(new Font(f.getName(),f.getStyle(),f.getSize() + fontSize));
if (component instanceof Container) {
for (Component child : ((Container) component).getComponents()) {
changeFont(child, fontSize);
}
}
}
相關問題
- 1. 將相同的字體設置爲項目中的所有類似控件
- 2. 所有列設置爲相同的值
- 3. 以java粗體/斜體設置所有組件
- 4. Java Hashtable將所有密鑰設置爲相同的值
- 5. 與所有字符相同的字體
- 6. RandomAccessFile:將所有項目設置爲相同的字節數?
- 7. 爲所有子組件設置屬性
- 8. 爲NSDictionary中的所有現有密鑰設置相同的值
- 9. 爲什麼我所有的數組索引值設置爲相同的值
- 10. 布爾值的java數組全部設置爲相同的值
- 11. Java Swing - 爲所有兒童組件設置不透明度?
- 12. 數組字段爲所有字段保存相同的值
- 13. MySQL的更新設置的所有字段相同
- 14. 專門爲頁面上的所有數字設置字體
- 15. 爲matplotlib中的所有子圖設置相同的軸限制
- 16. jar文件中的java設置字體
- 17. httpRequest for循環爲所有記錄設置相同的值
- 18. 爲所有圖像設置相同的高度
- 19. 使PhpStorm使用相同的設置爲所有項目
- 20. ListCellRenderer所有行設置爲相同的顏色
- 21. 如何將所有結構成員設置爲相同的值?
- 22. 如何爲所有元素設置相同的選擇器?
- 23. C#將列表中所有項目的字段設置爲相同的值
- 24. 爲兄弟組件的選擇設置相同的值
- 25. Java設置/獲取JFrame中的所有組件的文本
- 26. 如何在java中更改我所有組件的字體
- 27. 如何爲所有我的resx文件設置相同的文化?
- 28. 將UITextView中的所有新文字設置爲粗體
- 29. 爲視圖中的所有標籤設置自定義字體
- 30. 爲我的所有Jlabels JTextArea等設置通用字體大小
增加百分比每個組件的字體。如果我使用UIManager我改變字體的組件在整個應用程序,但我只能在特定的「JFrame」或「JPanel」中進行更改。謝謝 – Luca