JComboBox 读取本地字体库,如何把中文排在前边?

GraphicsEnvironment gEnv = GraphicsEnvironment.getLocalGraphicsEnvironment();

String evnfonts[] = gEnv.getAvailableFontFamilyNames();

if(evnfonts!=null && evnfonts.length>0){
fontBox = new JComboBox(evnfonts);
}

但是 读取出来的中文在后边 ,所以加进去就在后边,我如何把中文排在前边?

这是加了的效果:
[img]http://freish.iteye.com/upload/picture/pic/97991/7ddefc91-dad1-32b5-987d-091360d02b31.jpg[/img]

这是没加的效果:
[img]http://freish.iteye.com/upload/picture/pic/97991/7ddefc91-dad1-32b5-987d-091360d02b31.jpg[/img]

能详细说一下么

哦 这玩意没办法排序啊,这个是因为abcd排序 然后才排序别的编码的吧,除非你和qq一样,全部都是自己手动编排的

很简单

[code="java"]List tmp = Arrays.asList(evnfonts);

    Collections.reverse(tmp);
    evnfonts= tmp.toArray(new String[]{});
    fontBox = new JComboBox(evnfonts); [/code]

[code="java"]public class GetSystemFont extends JFrame {

private JComboBox box;
private String fontNames[];
private JLabel tipLabel;

public GetSystemFont() {
    super("获取系统字体");
    Container container = getContentPane();
    tipLabel = new JLabel("系统字体有:");
    container.add(tipLabel);

    GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();// GraphicsEnvironment是一个抽象类,不能实例化,只能用其中的静态方法获取一个实例
    fontNames = environment.getAvailableFontFamilyNames();// 获取系统字体

    java.util.List<String> tmp = Arrays.asList(fontNames);
    Collections.reverse(tmp);
    fontNames = tmp.toArray(new String[]{});
    box = new JComboBox(fontNames);

    // 为box注册ItemListener监听器
    box.addItemListener(new ItemListener() {
        public void itemStateChanged(ItemEvent event) {
            if (event.getStateChange() == event.SELECTED) {
                int style = tipLabel.getFont().getStyle(); // 获取当前字体的类型
                int size = tipLabel.getFont().getSize();// 获取当前字体的大小
                tipLabel.setFont(new Font(fontNames[box.getSelectedIndex()],
                        style, size));// 改变tipLabel的字体,但不改变大小和类型
            }
        }
    });

    container.setLayout(new FlowLayout());
    container.add(box);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setVisible(true);
    pack();
    setResizable(false);

    // 使窗口屏幕居中
    Toolkit kit = Toolkit.getDefaultToolkit();// 抽象类,通过静态方法获取实例
    Dimension frameSize = new Dimension(), screenSize = kit.getScreenSize(); // 获取屏幕的大小
    getSize(frameSize); // 获取窗口大小
    setLocation((screenSize.width - frameSize.width) / 2,
            (screenSize.height - frameSize.height) / 2);
}

public static void main(String[] args) {
    new GetSystemFont();
}

}[/code]

[quote]还有一个问题请教,我在area输入的时候会出现一个输入框,怎么去掉呢,具体看图![/quote]

swing写的东西貌似都有这个,很多软件都有,betbeans也有吧,不知道是不是去不掉

记得结贴啊

输入框的问题试试在程序中加入这句(未必管用的):
System.setProperty("java.awt.im.style","on-the-spot");

[quote]问题补充:
freish 写道
输入框的问题试试在程序中加入这句(未必管用的):
System.setProperty("java.awt.im.style","on-the-spot");

不行 不管用啊[/quote]

我在jdk1.6的JTextArea中是有效果的,本来的框变成虚线了

那个虚线是没法去掉的了,我看很多swing做的软件都有,如dbvisualizer

没加的是这样:上面错了

[img]http://freish.iteye.com/upload/picture/pic/97989/5ff00783-f203-32b3-b4ac-7d6177674fb3.jpg[/img]