参考:http://blog.sina.com.cn/s/blog_025270e90101b1db.html

1.IDE工具是eclipse,检查了编码是UTF-8,控制台中是中文,用awt就会乱码掉。

2.查看了代码,在文件夹中直接java XXX运行,awt的内容也是显示中文。

结论:ide的锅

Run As--Run Configurations--Arguments--VM arguments

添加:-Dfile.encoding=GB18030

新代码出现问题了。awt中文显示正常,控制台输出错误。

日哦。。。。在命令行里面跑是正常的,eclipse就各种掉链子。

TODO java -疑惑-awt-menuItem只能选择加在一个menubar中,或者加载一个popMenu中,而不能两边都加

menuItem只能选择加在一个menubar中,或者加载一个popMenu中,而不能两边都加

存疑。现在的代码确实是这样的。

以下代码,很多menuItem两边都加了,但是是以排在后面为准的。

这里的add的menuItem,不是实例的一次引用吗?add是指什么呢?

package chapter11;

import java.awt.BorderLayout;
import java.awt.CheckboxMenuItem;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.Panel;
import java.awt.PopupMenu;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.border.Border;

public class TestAwt{
	private Frame f = new Frame("test");
	private MenuBar mb = new MenuBar();
	//增加右键菜单menu
	PopupMenu pop = new PopupMenu();

	Menu file = new Menu("文件");
	Menu edit = new Menu("编辑");
	//文件menu的子item
	MenuItem newItem = new MenuItem("新建");
	MenuItem saveItem = new MenuItem("保存");
	MenuItem exitItem = new MenuItem("退出"
			,new MenuShortcut(KeyEvent.VK_X));

	//编辑menu的子item
	CheckboxMenuItem autoWrap =new CheckboxMenuItem("自动换行");
	MenuItem copyItem = new MenuItem("复制");
	MenuItem pasteItem = new MenuItem("粘贴");
	Menu format = new Menu("格式");

	//格式menu的子item
	MenuItem commentItem= new MenuItem("注释"
			,new MenuShortcut(KeyEvent.VK_SLASH,true));
	MenuItem cancelItem = new MenuItem("取消注释");

	//文本区域
	private TextArea ta = new TextArea(6,70);
	public void init(){
		//以匿名内部类创建菜单监听器
		ActionListener menuListener = new ActionListener(){
			public void actionPerformed(ActionEvent e){
				String cmd = e.getActionCommand();
				ta.append("单机["+cmd+"]菜单\n");
				if(cmd.equals("退出")){
					System.exit(0);
				}
			}
		};
		//给注释commentItem增加监听
		commentItem.addActionListener(menuListener);
		//为pop增加菜单项
		pop.add(autoWrap);
		pop.add(copyItem);
		pop.add(pasteItem);
		//给退出exit增加监听
		exitItem.addActionListener(menuListener);

		//为文件file增加子项
		file.add(newItem);
		file.add(saveItem);
		file.add(exitItem);
		//为编辑edit增加子项
		edit.add(autoWrap);
		//加分割线
		edit.addSeparator();
		edit.add(copyItem);
//		edit.add(pasteItem);

		//给格式增加子菜单
		format.add(commentItem);
		format.add(cancelItem);

		pop.add(format);

		final Panel p = new Panel();
		p.setPreferredSize(new Dimension(300,160));
		p.add(pop);
		p.addMouseListener(new MouseAdapter(){
			public void mouseReleased(MouseEvent e){
				if(e.isPopupTrigger()){
					pop.show(p, e.getX(), e.getY());
				}
			}
		});
	 	//增加分割线
		edit.add(new MenuItem("-"));
		//增加格式选项
		edit.add(format);

		//往menubar里面增加 file,edit选项
		mb.add(file);
		mb.add(edit); 

		//给frame设置menubar
		f.setMenuBar(mb);
		//给frame加监听
		f.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e ){
				ta.append("用户试图关闭窗口\n");
				System.exit(0);
			}
		});

		f.add(p);
		f.add(ta,BorderLayout.NORTH);
		f.pack();
		f.setVisible(true);
	}
	public static void main(String []args){
		new TestAwt().init();
	}
}

  

TODO java-awt中文乱码--疑惑的更多相关文章

  1. java awt 中文乱码 显示为 方块

    今天调试同学的五子棋程序,同学的界面是用awt写的,运行的时候,发现菜单栏中的中文都无法正常显示,而是变为了一个个方框, 类似于这样:(图片来源于网络) 即使做了字体设置,比如设置为宋体,也还是无法正 ...

  2. java ee 中文乱码的问题

    java ee 中文乱码的问题 发生中文乱码的三种情况 (一) 表单form Post 方法 直接在服务器中设置 request.setCharacterEncoding("utf-8&qu ...

  3. eclipse中添加进新的java项目中文乱码

    eclipse中添加进新的java项目中文乱码 添加学习的一些项目进eclipse中,结果其中的中文注释都变成了乱码 右击项目,点最下面的属性,出来新得弹框 在文本文件编码部分可以发现是GBK格式,选 ...

  4. Eclipse导入项目java文件中文乱码

    感谢大佬:https://blog.csdn.net/ordinaryprogrammerc/article/details/83013710 本文链接:https://blog.csdn.net/o ...

  5. java 解决中文乱码

    //1.代码解决 public class LuanMa { public static String getNewString(String luanma){ String result = &qu ...

  6. Java 关于中文乱码处理的经验总结【转载】

    为什么说乱码是中国程序员无法避免的话题呢?这个首先要从编码机制上说起,大家都是中文和英文的编码格式不是一样,解码也是不一样的!如果中国的程序员不会遇到乱码,那么只有使用汉语编程.汉语编程是怎么回事我也 ...

  7. Visual Studio Code Java输出中文乱码的问题

    Visual Studio Code 推出了java插件,最近适用了一把,非常不错,但是有个很明显的bug.就是中文乱码,具体现象有如下: 1.System.out.println 控制台输出乱码. ...

  8. java 菜单 中文 乱码问题解决方案(使用idea/eclipse) swing MenuItem乱码

    java swing MenuItem乱码 2016年12月30日 13:32:08751人阅读 评论(0) 收藏 举报   用java开发一个带有托盘图标的程序, 其它模块的中文显示都是正常的,比如 ...

  9. Java处理中文乱码问题

    package servlet; import javax.servlet.*; import javax.servlet.annotation.WebFilter; import javax.ser ...

随机推荐

  1. python 三目运算符

    格式: true_res if condition else false_res Meto 1: Meto 2: >>> x = 2 >>> x+1 if x!=1 ...

  2. flask 保存文件到 七牛云

    上篇文章队长讲述了如何把前端上传的文件保存到本地项目目录 本篇 讲述一下把前端上传的文件保存到 第三方存储(七牛云) 七牛云相关步骤思路: 首先 进去七牛云官网,注册并实名认证来获取一个七牛云账号和存 ...

  3. jQuery 获取url中的参数

    //获取url中的参数 function getUrlParam(name) { var reg = new RegExp("(^|&)" + name + "= ...

  4. Spring Boot 构建电商基础秒杀项目 (七) 自动校验

    SpringBoot构建电商基础秒杀项目 学习笔记 修改 UserModel 添加注解 public class UserModel { private Integer id; @NotBlank(m ...

  5. Java线程的创建方式三:Callable(四)

    一.Java实现多线程的三种方式 方式一:继承Thread类: public class Test extends Thread { public static void main(String[] ...

  6. poj-1724(bfs+优先队列)

    题意:有向图,给你m条边,每条边有两个权值,路径长和通过这条路径的花费,问你在不超过k花费的前提下,最短的路径从1走到n 解题思路:因为边数很少,我们可以直接用暴力每条边的方式来找最小的路径长,也就是 ...

  7. luogu3702-[SDOI2017]序列计数

    Description Alice想要得到一个长度为nn的序列,序列中的数都是不超过mm的正整数,而且这nn个数的和是pp的倍数. Alice还希望,这nn个数中,至少有一个数是质数. Alice想知 ...

  8. 【嵌入式】Arduino编程基础到应用全解析

    Arduino Author: Andrew.Du 基础 基础语法: setup() loop() pinMode(引脚,模式) pinMode(13,OUTPUT):设置13号引脚为输出 //在使用 ...

  9. Go语言类型(布尔、整型、数组、切片、map等)

    1.基本类型 布尔类型:bool 注意:布尔类型不能接受其他类型的赋值,不支持自动或强制的类型转换. 整型:int8.byte(uint8).int16.int.uint.uintptr int.ui ...

  10. python 模块之-pickle

    Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关 ...