netbeans中自己编写的代码,运行后窗口是中文,但是菜单变成了方块
package textfield;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
public class TextField implements ActionListener{
public static void main(String[] args) {
new TextField().create();
}
public void create(){
Frame f=new Frame("无痕制作");//显示正常
Menu m1=new Menu("文件");
Menu m2=new Menu("编辑");
Menu m3=new Menu("格式");
Menu m4=new Menu("帮助");
MenuBar mb=new MenuBar();
MenuItem mi1=new MenuItem("新建");//显示为方块
MenuItem mi2=new MenuItem("打开");
MenuItem mi3=new MenuItem("另存为");
MenuItem mi4=new MenuItem("保存");
MenuItem mi5=new MenuItem("退出");
m1.add(mi1);m1.add(mi2);m1.add(mi3);m1.add(mi4);m1.add(mi5);
mb.add(m1);mb.add(m2);mb.add(m3);mb.add(m4);
f.setMenuBar(mb);
f.setSize(400, 300);
f.setLocation(600, 500);
f.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
}
}
------解决方案--------------------
这是因为你用的是AWT这种重量级的实现,因为这个缘故带来了编码的问题,GBK本地平台编码和你NetBeansUTF8编码的问题,AWT换为SWING实现就没有问题
Java code
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import javax.swing.*;
public class TextField implements ActionListener{
public static void main(String[] args) {
new TextField().create();
}
public void create(){
JFrame f=new JFrame("无痕制作");//显示正常
JMenu m1=new JMenu("文件");
JMenu m2=new JMenu("编辑");
JMenu m3=new JMenu("格式");
JMenu m4=new JMenu("帮助");
JMenuBar mb=new JMenuBar();
JMenuItem mi1=new JMenuItem("新建");//显示为方块
JMenuItem mi2=new JMenuItem("打开");
JMenuItem mi3=new JMenuItem("另存为");
JMenuItem mi4=new JMenuItem("保存");
JMenuItem mi5=new JMenuItem("退出");
m1.add(mi1);m1.add(mi2);m1.add(mi3);m1.add(mi4);m1.add(mi5);
mb.add(m1);mb.add(m2);mb.add(m3);mb.add(m4);
// f.setMenuBar(mb);
f.setJMenuBar(mb);
f.setSize(400, 300);
f.setLocation(600, 500);
f.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
}
}