感谢你的帮助。修改后保存。现在编译能正常通过。 但是汉字显示是乱码。 打开文件一看: 比如:mnuRoot.add( new JMenuItem("新建",new ImageIcon("new.gif")));//“新建”却显示成“苞” UIManager.put("Button.font",new Font("宋体",Font.PLAIN,20));//“宋体”变成“婼”请问这是怎么回事啊?谢谢
Font f = new Font(UIResource.getString("Default_font"),Font.PLAIN,20); UIManager.put("Button.font",f);
//这里有个例子。相信对你有帮助//:国际化和本地化.txt1、 /** * File name: i18nDemoModify.java * Author: Jack, at http://bbs.whnet.edu.cn, Java discuss board. * Email: [email protected] * Description: Shows a Dialog with a "OK" button and "File"/"Exit" menu. * This program made some modifications to fit the requestion of i18n */ import javax.swing.*; import java.awt.*; import java.util.*; public class i18nDemoModify { public static void main(String args[]) throws Exception{ ResourceBundle res; if (args.length<1) { //use current locale at machine to get the resource bundle. //如果没有指定Locale,那么在生成ResourceBundle使用的Locale是当前机器上缺省的区域和语言 //这样,如果机子是Windows2000中文,则自动选择中文资源 //资源文件是以类的方式提供的。以Resmy开头,Resmy可以换成其他的字符串 res = ResourceBundle.getBundle("Resmy"); }else { res = ResourceBundle.getBundle("Resmy",new Locale(args[0], args[1])); } JDialog dialog=new JDialog(); JButton btOK=new JButton(); JMenuBar menuBar=new JMenuBar(); JMenu menuFile=new JMenu(); JMenuItem menuExit=new JMenuItem(); //如果不指定字体,将使用系统当前的字体 Font font = new Font(res.getString("FontName"),Font.PLAIN,12); btOK.setText(res.getString("OKText")); menuFile.setText(res.getString("FileMenuText")); menuExit.setText(res.getString("FileExitMenuText")); dialog.setTitle(res.getString("DialogTitle")); //如果不指定字体,将使用系统当前的字体 btOK.setFont(font); menuFile.setFont(font); menuExit.setFont(font); menuBar.add(menuFile); menuFile.add(menuExit); dialog.getContentPane().setLayout(new FlowLayout()); dialog.getContentPane().add(btOK); dialog.getContentPane().add(menuBar); dialog.setSize(200,100); dialog.setModal(true); dialog.show(); System.exit(0); } }
2、英文资源 /** * File name: Resmy_en_US.java * Author: Jack, at http://bbs.whnet.edu.cn, Java discuss board. * Email: [email protected] * Description: Resource file for i18nDemoModify.java */ import java.util.*; public class Resmy_en_US extends java.util.ListResourceBundle { static final Object[][] contents = new String[][]{ { "OKText", "OK" }, { "FontName", "Dialoginput" }, { "FileMenuText", "File"}, { "FileExitMenuText", "Exit"}, { "DialogTitle", "Demo Dialog" }}; public Object[][] getContents() { return contents; } } 3、中文资源 /** * File name: Resmy_zh_CN.java * Author: Jack, at http://bbs.whnet.edu.cn, Java discuss board. * Email: [email protected] * Description: Resource file for i18nDemo.java */ import java.util.*; public class Resmy_zh_CN extends java.util.ListResourceBundle { static final Object[][] contents = new String[][]{ { "OKText", "确定" }, { "FontName", "华文彩云" }, { "FileMenuText", "文件"}, { "FileExitMenuText", "退出"}, { "DialogTitle", "演示对话框" }}; public Object[][] getContents() { return contents; } }4、测试执行 javac i18nDemoModify.java javac Resmy_en_US.java javac Resmy_zh_CN.java java i18nDemoModify //根据操作系统而自动选择,选择OS使用的文字 rem java i18nDemoModify zh CN //明确指定汉字资源 rem java i18nDemoModify en US //明确指定英文资源
老师:你好! 对不起又麻烦你了。 我发现情况是这样的: 首先我运行: C:\javacode>javac PopupMenuDemo1.java PopupMenuDemo1.java:194: cannot resolve symbol symbol : variable UIResource location: class PopupMenuDemo1 Font f = new Font(UIResource.getString("Default_font"),Font.PLAIN,20); ^ 1 error然后我重新用手工一行一行的输入代码和汉字,重新保存为PopupMenuDemo1.java这个文件。结果我打开PopupMenuDemo1.java查看代码,发现汉字变成了乱码。 比如: “新建”变成“苞”。 所以运行的时候:本来应该显示为“新建”,就变成显示 “苞”。
我的系统是WIN98,用的是JDK1.4。
tangshancheng(98007): 你好: 同时我发现: 当我输入下面的程序时候: import java.util.*; public class Resmy_zh_CN extends java.util.ListResourceBundle { static final Object[][] contents = new String[][]{ { "OKText", "确定" }, { "FontName", "宋体" }, { "FileMenuText", "文件"}, { "FileExitMenuText", "退出"}, { "DialogTitle", "演示对话框" }}; public Object[][] getContents() { return contents; } }然后保存为Resmy_zh_CN.java 再打开时发现: 汉字变成这个样子了: import java.util.*; public class Resmy_zh_CN extends java.util.ListResourceBundle { static final Object[][] contents = new String[][]{ { "OKText", "n�" }, { "FontName", "婼" }, { "FileMenuText", "圅"}, { "FileExitMenuText", "请问是怎么回事啊?
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.UIManager;
public class PopupMenuDemo1 extends JFrame
{
public PopupMenuDemo1(String strTitle)
{
super(strTitle);
UIManager.put("Frame.font",Font);//在这里加入该句,但是编译显示出错
final JPopupMenu mnuRoot=new JPopupMenu();
mnuRoot.add( new JMenuItem("新建",new ImageIcon("new.gif")));//中文菜单名不能正常显示
mnuRoot.add( new JMenuItem("save",new ImageIcon("save.gif")));//英文菜单名能正常显示
mnuRoot.add( new JMenuItem("print",new ImageIcon("print.gif")));
final JLabel label=new JLabel("click me please",JLabel.CENTER); label.addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e)
{
mnuRoot.show(label,e.getX(),e.getY());
}
});
this.getContentPane().add(label);
}
public Dimension getPreferredSize()
{
return new Dimension(400,400);
}
public static void main( String[] args )
{
PopupMenuDemo1 frame=new PopupMenuDemo1("this is a example");
frame.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
frame.pack();
frame.show(); }
}编译时显示:
C:\javacode>javac PopupMenuDemo1.java
PopupMenuDemo1.java:35: cannot resolve symbol
symbol : variable Font
location: class PopupMenuDemo1
UIManager.put("Frame.font",Font);
^
1 error
这段程序我是从光盘拷过来的,(光盘的程序的程序名为PopupMenu.java,没有UIManager.put("Frame.font",Font);这一句),然后编译并运行PopupMenu.java显示中文没有问题。
当我把光盘的程序的程序名改为PopupMenuDemo1.java,并更改相应的类,运行显示不出中文。
朋友建议我加入UIManager.put("Frame.font",Font)。编译时出错。
请问该如何才能显示出中文。
public static void main(String args[]) throws Exception {
UIManager.put("Button.font",new Font("宋体",Font.PLAIN,20));
…………………………
}
但是汉字显示是乱码。
打开文件一看:
比如:mnuRoot.add( new JMenuItem("新建",new ImageIcon("new.gif")));//“新建”却显示成“苞”
UIManager.put("Button.font",new Font("宋体",Font.PLAIN,20));//“宋体”变成“婼”请问这是怎么回事啊?谢谢
UIManager.put("Button.font",f);
/**
* File name: i18nDemoModify.java
* Author: Jack, at http://bbs.whnet.edu.cn, Java discuss board.
* Email: [email protected]
* Description: Shows a Dialog with a "OK" button and "File"/"Exit" menu.
* This program made some modifications to fit the requestion of i18n
*/
import javax.swing.*;
import java.awt.*;
import java.util.*; public class i18nDemoModify {
public static void main(String args[]) throws Exception{
ResourceBundle res;
if (args.length<1) {
//use current locale at machine to get the resource bundle.
//如果没有指定Locale,那么在生成ResourceBundle使用的Locale是当前机器上缺省的区域和语言
//这样,如果机子是Windows2000中文,则自动选择中文资源
//资源文件是以类的方式提供的。以Resmy开头,Resmy可以换成其他的字符串
res = ResourceBundle.getBundle("Resmy");
}else {
res = ResourceBundle.getBundle("Resmy",new Locale(args[0], args[1]));
} JDialog dialog=new JDialog();
JButton btOK=new JButton();
JMenuBar menuBar=new JMenuBar();
JMenu menuFile=new JMenu();
JMenuItem menuExit=new JMenuItem();
//如果不指定字体,将使用系统当前的字体
Font font = new Font(res.getString("FontName"),Font.PLAIN,12); btOK.setText(res.getString("OKText"));
menuFile.setText(res.getString("FileMenuText"));
menuExit.setText(res.getString("FileExitMenuText"));
dialog.setTitle(res.getString("DialogTitle"));
//如果不指定字体,将使用系统当前的字体
btOK.setFont(font);
menuFile.setFont(font);
menuExit.setFont(font); menuBar.add(menuFile);
menuFile.add(menuExit);
dialog.getContentPane().setLayout(new FlowLayout());
dialog.getContentPane().add(btOK);
dialog.getContentPane().add(menuBar);
dialog.setSize(200,100);
dialog.setModal(true);
dialog.show();
System.exit(0);
}
}
2、英文资源
/**
* File name: Resmy_en_US.java
* Author: Jack, at http://bbs.whnet.edu.cn, Java discuss board.
* Email: [email protected]
* Description: Resource file for i18nDemoModify.java
*/
import java.util.*;
public class Resmy_en_US extends java.util.ListResourceBundle {
static final Object[][] contents = new String[][]{
{ "OKText", "OK" },
{ "FontName", "Dialoginput" },
{ "FileMenuText", "File"},
{ "FileExitMenuText", "Exit"},
{ "DialogTitle", "Demo Dialog" }};
public Object[][] getContents() {
return contents;
}
}
3、中文资源
/**
* File name: Resmy_zh_CN.java
* Author: Jack, at http://bbs.whnet.edu.cn, Java discuss board.
* Email: [email protected]
* Description: Resource file for i18nDemo.java
*/
import java.util.*;
public class Resmy_zh_CN extends java.util.ListResourceBundle {
static final Object[][] contents = new String[][]{
{ "OKText", "确定" },
{ "FontName", "华文彩云" },
{ "FileMenuText", "文件"},
{ "FileExitMenuText", "退出"},
{ "DialogTitle", "演示对话框" }};
public Object[][] getContents() {
return contents;
}
}4、测试执行
javac i18nDemoModify.java
javac Resmy_en_US.java
javac Resmy_zh_CN.java
java i18nDemoModify //根据操作系统而自动选择,选择OS使用的文字
rem java i18nDemoModify zh CN //明确指定汉字资源
rem java i18nDemoModify en US //明确指定英文资源
对不起又麻烦你了。
我发现情况是这样的: 首先我运行:
C:\javacode>javac PopupMenuDemo1.java
PopupMenuDemo1.java:194: cannot resolve symbol
symbol : variable UIResource
location: class PopupMenuDemo1
Font f = new Font(UIResource.getString("Default_font"),Font.PLAIN,20);
^
1 error然后我重新用手工一行一行的输入代码和汉字,重新保存为PopupMenuDemo1.java这个文件。结果我打开PopupMenuDemo1.java查看代码,发现汉字变成了乱码。
比如: “新建”变成“苞”。
所以运行的时候:本来应该显示为“新建”,就变成显示 “苞”。
我的系统是WIN98,用的是JDK1.4。
你好:
同时我发现:
当我输入下面的程序时候:
import java.util.*;
public class Resmy_zh_CN extends java.util.ListResourceBundle {
static final Object[][] contents = new String[][]{
{ "OKText", "确定" },
{ "FontName", "宋体" },
{ "FileMenuText", "文件"},
{ "FileExitMenuText", "退出"},
{ "DialogTitle", "演示对话框" }};
public Object[][] getContents() {
return contents;
}
}然后保存为Resmy_zh_CN.java
再打开时发现:
汉字变成这个样子了:
import java.util.*; public class Resmy_zh_CN extends java.util.ListResourceBundle { static final Object[][] contents = new String[][]{ { "OKText", "n�" }, { "FontName", "婼" }, { "FileMenuText", "圅"}, { "FileExitMenuText", "请问是怎么回事啊?
用javac编译
我用手工一行一行的输入代码和汉字,重新保存为PopupMenuDemo1.java这个文件。结果我打开PopupMenuDemo1.java查看代码,发现汉字变成了乱码。
比如: “新建”变成“苞”。
所以运行的时候:本来应该显示为“新建”,就变成显示 “苞”。
我的系统是WIN98,用的是JDK1.4。