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]