日期:2014-05-20  浏览次数:20698 次

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) {

  }
}