当前位置: 移动技术网 > IT编程>开发语言>Java > java仿windows记事本小程序

java仿windows记事本小程序

2019年07月19日  | 移动技术网IT编程  | 我要评论

本文实例为大家分享了java仿windows记事本小程序的具体代码,供大家参考,具体内容如下

import java.awt.checkboxmenuitem;
import java.awt.font;
import java.awt.frame;
import java.awt.menu;
import java.awt.menubar;
import java.awt.menuitem;
import java.awt.menushortcut;
import java.awt.textarea;
import java.awt.toolkit;
import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import java.awt.event.itemevent;
import java.awt.event.itemlistener;
import java.awt.event.keyevent;
import java.awt.event.windowadapter;
import java.awt.event.windowevent;
import java.awt.peer.buttonpeer;
import java.io.bufferedreader;
import java.io.file;
import java.io.fileinputstream;
import java.io.filenotfoundexception;
import java.io.fileoutputstream;
import java.io.ioexception;
import java.io.inputstreamreader;
import java.io.outputstream;
import java.io.stringreader;
import java.io.stringwriter;
import java.sql.date;
import java.text.simpledateformat;
 
import javax.print.docflavor.string;
import javax.script.scriptexception;
import javax.swing.borderfactory;
import javax.swing.boxlayout;
import javax.swing.buttongroup;
import javax.swing.jfilechooser;
import javax.swing.jframe;
import javax.swing.joptionpane;
import javax.swing.jpanel;
import javax.swing.jradiobutton;
import javax.swing.jscrollbar;
import javax.swing.jscrollpane;
import javax.swing.jtextarea;
import javax.swing.border.etchedborder;
import javax.swing.border.titledborder;
import javax.swing.event.ancestorlistener;
import javax.swing.filechooser.filenameextensionfilter;
 
public class crazy_15_4 {
 private jframe f = new jframe("记事本");
 
 //成员变量
 static string shearplate = null;
 static boolean isautowrap = true;//是否自动换行
 jtextarea ta = new jtextarea(20, 60);
 jscrollpane jsp = new jscrollpane(ta);
 private menubar mb = new menubar();
 public string fontstr = "宋体";
 public string shapestr = "0";
 public string sizestr = "20";
 font font = new font(fontstr, integer.parseint(shapestr),integer.parseint(sizestr) );
 
 
 //menu
 menu file = new menu("文件");
 menu edit = new menu("编辑");
 menu format = new menu("格式");
 
 //menuitem
 menuitem newitem = new menuitem("新建");
 menuitem openitem = new menuitem("打开");
 menuitem saveitem = new menuitem("保存");
 menuitem saveasitem = new menuitem("另存为");
 menuitem cutitem = new menuitem("剪切");
 menuitem copyitem = new menuitem("复制");
 menuitem pasteitem = new menuitem("粘贴");
 checkboxmenuitem autowrap = new checkboxmenuitem("自动换行",isautowrap);
 menuitem fontitem = new menuitem("字体");
 //使用“ctrl+x”快捷键
 menuitem exitiitem = new menuitem("退出", new menushortcut(keyevent.vk_x));
 
 
 
 
 
 public void init() {
 //带滚动条的文本域
 ta.setlinewrap(isautowrap);
 jsp.sethorizontalscrollbarpolicy(jscrollpane.horizontal_scrollbar_never);
 jsp.setverticalscrollbarpolicy(jscrollpane.vertical_scrollbar_as_needed);
 
 
 file.add(newitem);
 file.add(openitem);
 file.add(saveitem);
 file.add(saveasitem);
 
 edit.add(cutitem);
 edit.add(copyitem);
 edit.add(pasteitem);
 
 format.add(autowrap);
 format.add(fontitem);
 
 mb.add(file);
 mb.add(edit);
 mb.add(format);
 
 f.setmenubar(mb);
 f.addwindowlistener(new windowadapter() {
 public void windowclosing(windowevent we) {
 if(!(ta.gettext().equals(""))) {
  object[] options = {"保存","不保存","取消"};
  int a = joptionpane.showoptiondialog(null,"是否将更改保存到h:/programing/无标题.txt","记事本", joptionpane.yes_no_cancel_option,joptionpane.question_message, null, options, options[0]);
  if(a == joptionpane.ok_option ) {
  if(save()) {
  system.exit(0);
  }
  }else if(a == joptionpane.no_option) {
  system.exit(0);
  }
 }else {
  system.exit(0);
 }
 }
 });
 
 newitem.addactionlistener(new newlistener());
 openitem.addactionlistener(new openlistener());
 saveitem.addactionlistener(new savelistener());
 saveasitem.addactionlistener(new saveaslistener());
 cutitem.addactionlistener(new cutaslistener());
 copyitem.addactionlistener(new copyaslistener());
 pasteitem.addactionlistener(new pasteaslistener());
 autowrap.additemlistener(new autowrapaslistener());
 fontitem.addactionlistener(new fontlistener());
 
 ta.setfont(font);
 //使文本框处在屏幕中间
 int width = toolkit.getdefaulttoolkit().getscreensize().width;
 int height = toolkit.getdefaulttoolkit().getscreensize().height; 
 f.add(jsp);
 f.pack();
 f.setlocation(width/2-f.getwidth()/2, height/2-f.getheight()/2);
 f.setvisible(true);
 //避免关闭对话框直接关闭文本文件
 f.setdefaultcloseoperation(jframe.do_nothing_on_close);
 }
 public static void main(string[] args) {
 new crazy_15_4().init();
 }
 
 //是否保存
 public void saveornot() {
 if(!(ta.gettext().equals(""))) {
 object[] options = {"保存","不保存","取消"};
 int a = joptionpane.showoptiondialog(null,"是否将更改保存到h:/programing/无标题.txt","记事本", joptionpane.yes_no_cancel_option,joptionpane.question_message, null, options, options[0]);
 if(a == joptionpane.ok_option ) {
 save();
 }
 }
 }
 //保存文本文件
 public boolean save() {
 boolean issaved = false;
 jfilechooser jf = new jfilechooser();
 filenameextensionfilter filter = new filenameextensionfilter("txt","txt");
 jf.setacceptallfilefilterused(false);
 jf.setfilefilter(filter);
 int value = jf.showsavedialog(null);
 if(value == jfilechooser.approve_option) {
 file file = jf.getselectedfile();
 string str = ta.gettext();
 byte[] buf = str.getbytes();
 try {
 outputstream os = new fileoutputstream(file);
 os.write(buf);
 os.flush();
 os.close();
 issaved = true;
 } catch (ioexception e) {
 e.printstacktrace();
 }
 }
 return issaved;
 }
 //新建监听器
 class newlistener implements actionlistener{
 public void actionperformed(actionevent e) {
 if(!(ta.gettext().equals(""))) {
 object[] options = {"保存","不保存","取消"};
 int a = joptionpane.showoptiondialog(null,"是否将更改保存到h:/programing/无标题.txt","记事本", joptionpane.yes_no_cancel_option,joptionpane.question_message, null, options, options[0]);
 if(a == joptionpane.ok_option ) {
  if(save()) {
  ta.settext("");
  }
 }else if(a == joptionpane.no_option) {
  ta.settext("");
 }
 }
 
 }
 }
 
 //打开监听器,从硬盘目录打开文本文件
 class openlistener implements actionlistener{
 public void actionperformed(actionevent e) {
 jfilechooser jf = new jfilechooser();
 filenameextensionfilter filter = new filenameextensionfilter("txt","txt");
 jf.setacceptallfilefilterused(false);
 jf.setfilefilter(filter);
 int value = jf.showopendialog(null);
 if(value == jfilechooser.approve_option) {
 file file = jf.getselectedfile();
 try {
  string encoding = "gbk";//考虑编码格式
  inputstreamreader isr = new inputstreamreader(new fileinputstream(file),encoding);
  bufferedreader br = new bufferedreader(isr);
  string str = null;
  while((str = br.readline()) != null) {
  ta.append(str);
  }
 } catch (filenotfoundexception e1) {
  // todo auto-generated catch block
  e1.printstacktrace();
 } catch (ioexception e1) {
  // todo auto-generated catch block
  e1.printstacktrace();
 }
 }
 }
 }
 
 //保存监听器,以电脑时间命名
 class savelistener implements actionlistener{
 public void actionperformed(actionevent e) {
 string name = null;
 simpledateformat df = new simpledateformat("yyyy-mm-dd hh-mm-ss");
 name = df.format(system.currenttimemillis());
 file file = new file("h:/programing/workspace/"+name+".txt");
 string str = ta.gettext();
 byte[] buf = str.getbytes();
 if(!str.equals("")) {
 try {
  outputstream os = new fileoutputstream(file);
  os.write(buf);
  os.flush();
  os.close();
 } catch (ioexception e2) {
  e2.printstacktrace();
 }
 }
 }
 }
 
 //另存为监听器 
 class saveaslistener implements actionlistener{
 public void actionperformed(actionevent e) {
 save();
 }
 }
 
 //剪切监听器 
 class cutaslistener implements actionlistener{
 public void actionperformed(actionevent e) {
 shearplate = ta.getselectedtext();
 int startposi = ta.getselectionstart();
 int endposi = ta.getselectionend();
 stringbuffer sb = new stringbuffer(ta.gettext());
 sb.delete(startposi, endposi);
 ta.settext(sb.tostring());
 }
 }
 
 //复制监听器 
 class copyaslistener implements actionlistener{
 public void actionperformed(actionevent e) {
 shearplate = ta.getselectedtext();
 }
 }
 
 //粘贴监听器 
 class pasteaslistener implements actionlistener{
 public void actionperformed(actionevent e) {
 int position = ta.getcaretposition();
 stringbuilder sb = new stringbuilder(ta.gettext());
 sb.insert(position, shearplate);
 ta.settext(sb.tostring());
 ta.setcaretposition(position+shearplate.length());
 }
 }
 
 //自动换行监听器 
 class autowrapaslistener implements itemlistener{
 
 @override
 public void itemstatechanged(itemevent e) {
 if(autowrap.getstate()) {
  isautowrap = true;
  ta.setlinewrap(isautowrap);
  jsp.sethorizontalscrollbarpolicy(jscrollpane.horizontal_scrollbar_never);
  jsp.setverticalscrollbarpolicy(jscrollpane.vertical_scrollbar_as_needed);
 }else {
  isautowrap = false;
  ta.setlinewrap(isautowrap);
  jsp.sethorizontalscrollbarpolicy(jscrollpane.horizontal_scrollbar_as_needed);
  jsp.setverticalscrollbarpolicy(jscrollpane.vertical_scrollbar_never);
 }
 }
 }
 
 //字体监听器 
 class fontlistener implements actionlistener{
 jframe jf = new jframe("字体");
 jpanel jp = new jpanel();
 buttonpanel fontbutton = new buttonpanel("字体",new string[] {"宋体","黑体","楷体","吴祎晗1.0"});
 buttonpanel shapebutton = new buttonpanel("字形",new string[] {"常规","粗体","斜体","粗体&斜体"});
 buttonpanel sizebutton = new buttonpanel("字号",new string[] {"12","16","20","24","26"});
 public void actionperformed(actionevent e) {
 jp.setborder(new titledborder(new etchedborder(),"字体选择",titledborder.center,titledborder.top));
 jp.add(fontbutton);
 jp.add(shapebutton);
 jp.add(sizebutton);
 jf.add(jp);
 jf.pack();
 jf.setlocationrelativeto(f);
 jf.setvisible(true);
 jf.addwindowlistener(new windowadapter() {
  public void windowclosing(windowevent e) {
  fontstr = fontbutton.getselec();
  sizestr = sizebutton.getselec();
  font = new font(fontstr, shapeval(shapebutton.getselec()), integer.parseint(sizestr));
  ta.setfont(font);
  }
 });
 }
 
 public int shapeval(string str) {
 int a = 0;
 switch (str) {
 case "常规":
  a = 0;
  break;
 case "粗体":
  a = 1;
  break;
 case "斜体":
  a = 2;
  break;
 case "粗体&斜体":
  a = 3;
  break;
 }
 return a;
 }
 }
 
}
 
//定义一个jpanel类扩展类,该类的对象包含多个纵向排列的
//jradiobutton控件,且panel扩展类可以指定一个字符串作为titledborder
class buttonpanel extends jpanel{
 private buttongroup group;
 public buttonpanel(string title, string[] options) {
 setborder(borderfactory.createtitledborder(borderfactory.createetchedborder(),title));
 setlayout(new boxlayout(this, boxlayout.y_axis));
 group = new buttongroup();
 for(int i=0; options!=null&&i<options.length; i++) {
 jradiobutton b = new jradiobutton(options[i]);
 b.setactioncommand(options[i]);
 this.add(b);
 group.add(b);
 if(title.equals("字号")) {
 b.setselected(i == 2);
 }else {
 b.setselected(i == 0);
 }
 }
 }
 public string getselec() {
 return group.getselection().getactioncommand();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网