JavaAWT中文乱码问题解决?

package com.awt.frame;

import java.awt.Color;
import java.awt.FileDialog;
import java.awt.Frame;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
 * 
 * @author Administrator
 *	文本编译器
 */
public class TextEditor {
	private Frame f;
	private MenuBar mb;
	private Menu mFile,mEdit,mHelp,mTools;
	private MenuItem mOpen,mSave,mExit,mCopy,mPaste,mReplace,mWeb,mPaint,mDefine;
	private FileDialog fd;
	private String fileName;
	private char ch;
	private String s="";
	private TextArea ta;
	private MenuListener menuListener;
	private FileOutputStream fos;
	private OutputStreamWriter osw;
	private FileInputStream fis;
	private InputStreamReader isr;
	private BufferedReader br;
	
	public TextEditor() {
		f=new Frame("简单文本编译器");
		mb=new MenuBar();
		mFile=new Menu("文件");
		mEdit=new Menu("编辑");
		mHelp=new Menu("帮助");
		mTools=new Menu("工具栏");
		mOpen=new MenuItem("打开");
		mSave=new MenuItem("保存");
		mExit=new MenuItem("退出");
		mCopy=new MenuItem("复制");
		mPaste=new MenuItem("粘贴");
		mReplace=new MenuItem("替换");
		mWeb=new MenuItem("Web工具");
		mPaint=new MenuItem("绘图");
		mDefine=new MenuItem("自定义");
		
		f.setMenuBar(mb);
		mb.add(mFile);
		mb.add(mEdit);
		mb.setHelpMenu(mHelp);
		
		mFile.add(mOpen);
		mFile.add(mSave);
		mFile.addSeparator();
		mFile.add(mExit);
		
		mEdit.add(mCopy);
		mEdit.add(mPaste);
		mEdit.add(mReplace);
		mEdit.addSeparator();
		mEdit.add(mTools);
		
		mTools.add(mWeb);
		mTools.add(mPaint);
		mTools.add(mDefine);
		
		ta=new TextArea("",10,10);
		f.add("Center",ta);
		ta.setForeground(Color.black);//设置文本颜色
		ta.addKeyListener(new KeyAdapter() {
			public void keyTyped(KeyEvent ev) {
				s+=ev.getKeyChar();
			}
		});
		f.setSize(400,200);
		f.setVisible(true);
		
		menuListener=new MenuListener();
		mExit.addActionListener(menuListener);
		mOpen.addActionListener(menuListener);
		mSave.addActionListener(menuListener);
		
		f.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(1);
			}
		});
	}
	
	public static void main(String[] args) {
		TextEditor te=new TextEditor();
		
	}

class MenuListener implements ActionListener{
	public void actionPerformed(ActionEvent ev) {
		MenuItem i=(MenuItem)ev.getSource();
		String label=i.getLabel();
		if(label=="退出") System.exit(1);
		else if(label=="保存") saveFile();
		
	}
}

void saveFile() {
	fd=new FileDialog(f,"请输入要保存的文件名",FileDialog.SAVE);
	fd.setVisible(true);
	fileName=fd.getFile();
	try {
		fos=new FileOutputStream(fileName);
		osw=new OutputStreamWriter(fos);
		System.out.println(s);
		osw.write(s);
		osw.flush();
		osw.close();
		fos.close();
	}catch(Exception e) {}
}
}

运行之后代码中文出现了乱码:

解决方法:

第二步:

第三步:

第四步:输入:-Dfile.encoding=gbk

猜你喜欢

转载自blog.csdn.net/baidu_38995168/article/details/81613165