java记事本编码gbk的不可映射字符怎么解决(java记事本)-ky体育

java记事本编码gbk的不可映射字符怎么解决(java记事本)

导读 大家好,乐乐来为大家解答以下的问题,关于java记事本编码gbk的不可映射字符怎么解决,java记事本这个很多人还不知道,那么今天让乐乐带着大...

大家好,乐乐来为大家解答以下的问题,关于java记事本编码gbk的不可映射字符怎么解决,java记事本这个很多人还不知道,那么今天让乐乐带着大家一起来看看吧!

1、import java.awt.borderlayout;import java.awt.container;import java.awt.font;import java.awt.event.actionevent;import java.awt.event.actionlistener;import java.awt.event.inputevent;import java.awt.event.keyadapter;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 java.io.bufferedreader;import java.io.bufferedwriter;import java.io.file;import java.io.filereader;import java.io.filewriter;import java.io.ioexception;import javax.swing.borderfactory;import javax.swing.jfilechooser;import javax.swing.jframe;import javax.swing.jlabel;import javax.swing.jmenu;import javax.swing.jmenubar;import javax.swing.jmenuitem;import javax.swing.joptionpane;import javax.swing.jpopupmenu;import javax.swing.jscrollpane;import javax.swing.jtextarea;import javax.swing.keystroke;import javax.swing.scrollpaneconstants;import javax.swing.swingconstants;public class jnotepadui extends jframe { private jmenuitem menuopen; private jmenuitem menusave; private jmenuitem menusaveas; private jmenuitem menuclose; private jmenu editmenu; private jmenuitem menucut; private jmenuitem menucopy; private jmenuitem menupaste; private jmenuitem menuabout; private jtextarea textarea; private jlabel statebar; private jfilechooser filechooser; private jpopupmenu popupmenu; public jnotepadui() { super("新建文本文件"); setupuicomponent(); setupeventlistener(); setvisible(true); } private void setupuicomponent() { setsize(640, 480); // 菜单栏 jmenubar menubar = new jmenubar(); // 设置「文件」菜单 jmenu filemenu = new jmenu("文件"); menuopen = new jmenuitem("打开"); // 快捷键设置 menuopen.setaccelerator( keystroke.getkeystroke( keyevent.vk_o, inputevent.ctrl_mask)); menusave = new jmenuitem("保存"); menusave.setaccelerator( keystroke.getkeystroke( keyevent.vk_s, inputevent.ctrl_mask)); menusaveas = new jmenuitem("另存为"); menuclose = new jmenuitem("关闭"); menuclose.setaccelerator( keystroke.getkeystroke( keyevent.vk_q, inputevent.ctrl_mask)); filemenu.add(menuopen); filemenu.addseparator(); // 分隔线 filemenu.add(menusave); filemenu.add(menusaveas); filemenu.addseparator(); // 分隔线 filemenu.add(menuclose); // 设置「编辑」菜单 jmenu editmenu = new jmenu("编辑"); menucut = new jmenuitem("剪切"); menucut.setaccelerator( keystroke.getkeystroke(keyevent.vk_x, inputevent.ctrl_mask)); menucopy = new jmenuitem("复制"); menucopy.setaccelerator( keystroke.getkeystroke(keyevent.vk_c, inputevent.ctrl_mask)); menupaste = new jmenuitem("粘贴"); menupaste.setaccelerator( keystroke.getkeystroke(keyevent.vk_v, inputevent.ctrl_mask)); editmenu.add(menucut); editmenu.add(menucopy); editmenu.add(menupaste); // 设置「关于」菜单 jmenu aboutmenu = new jmenu("关于"); menuabout = new jmenuitem("关于jnotepad"); aboutmenu.add(menuabout); menubar.add(filemenu); menubar.add(editmenu); menubar.add(aboutmenu); setjmenubar(menubar); // 文字编辑区域 textarea = new jtextarea(); textarea.setfont(new font("宋体", font.plain, 16)); textarea.setlinewrap(true); jscrollpane panel = new jscrollpane(textarea, scrollpaneconstants.vertical_scrollbar_as_needed, scrollpaneconstants.horizontal_scrollbar_never); container contentpane = getcontentpane(); contentpane.add(panel, ***.center); // 状态栏 statebar = new jlabel("未修改"); statebar.sethorizontalalignment(swingconstants.left); statebar.setborder( borderfactory.createetchedborder()); contentpane.add(statebar, borderlayout.south); popupmenu = editmenu.getpopupmenu(); filechooser = new jfilechooser(); } private void setupeventlistener() { // 按下窗口关闭钮事件处理 addwindowlistener( new windowadapter() { public void windowclosing(windowevent e) { closefile(); } } ); // 菜单 - 打开 menuopen.addactionlistener( new actionlistener() { public void actionperformed(actionevent e) { openfile(); } } ); // 菜单 - 保存 menusave.addactionlistener( new actionlistener() { public void actionperformed(actionevent e) { savefile(); } } ); // 菜单 - 另存为 menusaveas.addactionlistener( new actionlistener() { public void actionperformed(actionevent e) { savefileas(); } } ); // 菜单 - 关闭文件 menuclose.addactionlistener( new actionlistener() { public void actionperformed(actionevent e) { closefile(); } } ); // 菜单 - 剪切 menucut.addactionlistener( new actionlistener() { public void actionperformed(actionevent e) { cut(); } } ); // 菜单 - 复制 menucopy.addactionlistener( new actionlistener() { public void actionperformed(actionevent e) { copy(); } } ); // 菜单 - 粘贴 menupaste.addactionlistener( new actionlistener() { public void actionperformed(actionevent e) { paste(); } } ); // 菜单 - 关于 menuabout.addactionlistener( new actionlistener() { public void actionperformed(actionevent e) { // 显示对话框 joptionpane.showoptiondialog(null, "程序名称: jnotepad " "程序设计: " "简介: 一个简单的文字编辑器" " 可作为验收java的实现对象" " 欢迎网友下载研究交流" " /", "关于jnotepad", joptionpane.default_option, joptionpane.information_message, null, null, null); } } ); // 编辑区键盘事件 textarea.addkeylistener( new keyadapter() { public void keytyped(keyevent e) { processtextarea(); } } ); // 编辑区鼠标事件 textarea.addmouselistener( new mouseadapter() { public void mousereleased(mouseevent e) { if(e.getbutton() == mouseevent.button3) ***.show(editmenu, e.getx(), e.gety()); } public void mouseclicked(mouseevent e) { if(e.getbutton() == mouseevent.button1) popupmenu.setvisible(false); } } ); } private void openfile() { if(iscurrentfilesaved()) { // 文件是否为保存状态 open(); // 打开 } else { // 显示对话框 int option = joptionpane.showconfirmdialog( null, "文件已修改,是否保存?", "保存文件?", joptionpane.yes_no_option, joptionpane.warning_message, null); switch(option) { // 确认文件保存 case joptionpane.yes_option: savefile(); // 保存文件 break; // 放弃文件保存 case ***.no_option: open(); break; } } } private boolean iscurrentfilesaved() { if(statebar.gettext().equals("未修改")) { return false; } else { return true; } } private void open() { // filechooser 是 jfilechooser 的实例 // 显示文件选取的对话框 int option = filechooser.showdialog(null, null); // 使用者按下确认键 if(option == jfilechooser.approve_option) { try { // 开启选取的文件 bufferedreader buf = new bufferedreader( new filereader( filechooser.getselectedfile())); // 设定文件标题 settitle(filechooser.getselectedfile().tostring()); // 清除前一次文件 textarea.settext(""); // 设定状态栏 statebar.settext("未修改"); // 取得系统相依的换行字符 string lineseparator = system.getproperty("line.separator"); // 读取文件并附加至文字编辑区 string text; while((text = buf.readline()) != null) { textarea.append(text); textarea.append(lineseparator); } buf.close(); } catch(ioexception e) { joptionpane.showmessagedialog(null, e.tostring(), "开启文件失败", joptionpane.error_message); } } } private void savefile() { // 从标题栏取得文件名称 file file = new file(gettitle()); // 若指定的文件不存在 if(!file.exists()) { // 执行另存为 savefileas(); } else { try { // 开启指定的文件 bufferedwriter buf = new bufferedwriter( new filewriter(file)); // 将文字编辑区的文字写入文件 buf.write(textarea.gettext()); buf.close(); // 设定状态栏为未修改 statebar.settext("未修改"); } catch(ioexception e) { joptionpane.showmessagedialog(null, e.tostring(), "写入文件失败", joptionpane.error_message); } } } private void savefileas() { // 显示文件对话框 int option = filechooser.showsavedialog(null); // 如果确认选取文件 if(option == jfilechooser.approve_option) { // 取得选择的文件 file file = filechooser.getselectedfile(); // 在标题栏上设定文件名称 settitle(file.tostring()); try { // 建立文件 file.createnewfile(); // 进行文件保存 savefile(); } catch(ioexception e) { joptionpane.showmessagedialog(null, e.tostring(), "无法建立新文件", joptionpane.error_message); } } } private void closefile() { // 是否已保存文件 if(iscurrentfilesaved()) { // 释放窗口资源,而后关闭程序 dispose(); } else { int option = joptionpane.showconfirmdialog( null, "文件已修改。

2、是否保存?", "保存文件?", joptionpane.yes_no_option, joptionpane.warning_message, null); switch(option) { case joptionpane.yes_option: savefile(); break; case ***.no_option: dispose(); } } } private void cut() { textarea.cut(); statebar.settext("已修改"); popupmenu.setvisible(false); } private void copy() { textarea.copy(); popupmenu.setvisible(false); } private void paste() { textarea.。

本文分享到此完毕,希望对您有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!
网站地图