我的目的是:
修改我自己做的一个java应用程序所有组件的字体,而不是显示现在java的默认的那种黑色的粗体
网上说可以用循环来修改,但是具体怎么操作我不知道,怎么把frame上的所有组件都放到arrayList里面呢?之后每个组件都可以用下面的代码实现修改字体了。Font myfont=new Font("arial",Font.ITALIC,25);
//设置逻辑名称,风格,尺寸
Color my_color=new Color(0,0,225);
//创建自己的颜色,也可以用默认的几种,如Color.red
my_label.setFont(myfont);
my_label.setForeground(my_color);
后来,我在swing hacks上面看到了一个修改java字体的程序。
但是执行的时候,到if结束就return了,肯定出现在args.length上面。
请问这个程序段怎么修改才能实现它的功能啊?
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */package changefront;import java.awt.Font;
import java.util.Enumeration;
import java.util.Hashtable;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
import javax.swing.UIManager;
import javax.swing.WindowConstants;/**
 *
 * @author Administrator
 */
public class ChangeAllFonts {
final static String[] LIST_ITEMS =
{ "JList", "with", "new Font" }; public static void main (String[] args) {
try {
// get user's font if (args.length < 1) {
System.out.println ("Usage: ChangeAllFonts font-name");
return;

}
               
String fontName = args[0];
Font font = new Font (fontName, Font.PLAIN, 12); // put this font in the defaults table for every
// ui font resource key
Hashtable defaults = UIManager.getDefaults();
Enumeration keys = defaults.keys();
while (keys.hasMoreElements()) {            Object key = keys.nextElement();
if ((key instanceof String) &&
(((String) key).endsWith(".font"))) {
System.out.println (key);
defaults.put (key, font);
}
} // now bring up a GUI to show this off
JPanel panel = new JPanel();
panel.setLayout (new BoxLayout (panel, BoxLayout.Y_AXIS));
panel.add (new JLabel ("JLabel with font " + fontName));
panel.add (new JTextField ("JTextField with font " +fontName));
panel.add (new JButton ("JButton with font " +fontName));
JList list = new JList (LIST_ITEMS);
JScrollPane pane =new JScrollPane (list,
ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS,
ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
panel.add (pane); JFrame frame = new JFrame ("Changing default fonts");
frame.setDefaultCloseOperation (WindowConstants.EXIT_ON_CLOSE);
frame.getContentPane().add(panel);
frame.pack();
frame.setVisible(true);                        System.out.println("frame is visible");
} catch (Exception e) {
e.printStackTrace();
}
}}

解决方案 »

  1.   

    解决了!用UIManager即可
      private void setMyLookAndFeel() {
          try {
                //设置windows风格的look and feel
    UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
                       Font font = new Font("宋体", Font.PLAIN, 12);//字体为宋体,样式为常规,字号12
              UIManager.put("MenuBar.font", font);
              UIManager.put("MenuItem.font", font);
              UIManager.put("Menu.font", font);
              UIManager.put("PopupMenu.font", font);
              UIManager.put("ToolBar.font", font);
              UIManager.put("ToolTip.font", font);
              UIManager.put("TabbedPane.font", font);
              UIManager.put("Label.font", font);
              UIManager.put("List.font", font);
              UIManager.put("ComboBox.font", font);
              UIManager.put("Button.font", font);
              UIManager.put("Table.font", font);
              UIManager.put("TableHeader.font", font);
              UIManager.put("Tree.font", font);
              UIManager.put("TextField.font", font);
              UIManager.put("TextArea.font", font);
              UIManager.put("TitledBorder.font", font);
              UIManager.put("OptionPane.font", font);
              UIManager.put("RadioButton.font", font);
              UIManager.put("CheckBox.font", font);
              UIManager.put("ToggleButton.font", font);
              UIManager.put("Dialog.font", font);
              UIManager.put("Panel.font", font);
          }catch (Exception e) {
              e.printStackTrace();
          }
      }
    //在“ initComponents();”语句前添加setMyLookAndFeel();即可实现更改字体。