首页 > 其他分享 >简单记事本

简单记事本

时间:2023-05-26 09:56:26浏览次数:30  
标签:addActionListener JMenuItem private add editor 简单 new 记事本

package xu01;

import java.awt.*;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import java.awt.event.*;
import java.io.*;
public class Nodepad extends JFrame
{
private JTextArea editor;
private Container c;


private JMenuBar mb;
private JMenu fileMenu;
private JMenu editMenu;
private JMenu formatMenu;
private JMenuItem fileMenuOpen,fileMenuSave,fileMenuExit;
private JMenuItem editMenuCopy,editMenuCut,editMenuPaste;
private JMenu formatSet;
private JMenuItem lineWrap,cancleLineWrap,wrapStyleWord,cancleWrapStyleWord;
private JMenu fontMenu;
private JMenu color;
private JMenu style;
private JMenuItem bold,italic,hong,lan,lv,huang,hei;
int b=Font.PLAIN;
int i=Font.PLAIN;

String[] zh={"8","10","12","14","16","18","20","24","28","32","40","56",};
private JMenu fontlabel;
private JComboBox c1,c2;
String ss="宋体";
int s=12;

private String [] mz={"宋体","华文行楷","黑体","华文新魏","方正舒体","方正桃体","隶书","楷体","幼圆","华文彩云",};

private JToolBar toolBar;
private JButton b1,b2,b3,b4,b5;

private JPopupMenu pm;
private JMenuItem item1,item2,item3,item4,item5;

public Nodepad()
{
super("简单记事本");
setBounds(200,100,500,400);
try{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e){ System.err.println("不能被设置外观的原因:"+e);}
c=getContentPane();
editor = new JTextArea();
c.add(new JScrollPane(editor));


mb = new JMenuBar();
fileMenu = new JMenu("文件(F)");
fileMenuOpen = new JMenuItem("打开(O)...Ctrl+O");
fileMenuSave = new JMenuItem("保存(S)...Ctrl+S");
fileMenuExit = new JMenuItem("退出");
JMHandler JM=new JMHandler();
fileMenuOpen.addActionListener(JM);
fileMenuSave.addActionListener(JM);
fileMenuExit.addActionListener(JM);
fileMenu.add(fileMenuOpen);
fileMenu.add(fileMenuSave);
fileMenu.addSeparator();
fileMenu.add(fileMenuExit);



editMenu = new JMenu("编辑(E)");
editMenuCopy = new JMenuItem("复制(C) Ctrl+C");
editMenuCut = new JMenuItem("剪切(T) Ctrl+X");
editMenuPaste = new JMenuItem("粘贴(P) Ctrl+v");
EMHandler EM=new EMHandler();
editMenuCopy.addActionListener(EM);
editMenuCut.addActionListener(EM);
editMenuPaste.addActionListener(EM);
editMenu.add(editMenuCopy);
editMenu.add(editMenuCut);
editMenu.add(editMenuPaste);



formatMenu = new JMenu("格式(O)");
formatSet = new JMenu("格式设置");
lineWrap = new JMenuItem("自动换行");
cancleLineWrap = new JMenuItem("取消自动换行");
wrapStyleWord = new JMenuItem("断行不断字");
cancleWrapStyleWord = new JMenuItem("取消断行不断字");
FMHandler FM=new FMHandler();
lineWrap.addActionListener(FM);
cancleLineWrap.addActionListener(FM);
wrapStyleWord.addActionListener(FM);
cancleWrapStyleWord.addActionListener(FM);
formatSet.add(lineWrap);
formatSet.add(cancleLineWrap);
formatSet.addSeparator();
formatSet.add(wrapStyleWord);
formatSet.add(cancleWrapStyleWord);
formatMenu.add(formatSet);


fontMenu=new JMenu("字体(Z)");
color=new JMenu("颜色");
hong=new JMenuItem("红色");
color.add(hong);
lan=new JMenuItem("蓝色");
color.add(lan);
lv=new JMenuItem("绿色");
color.add(lv);
huang=new JMenuItem("黄色");
color.add(huang);
hei=new JMenuItem("黑色");
color.add(hei);

bold=new JCheckBoxMenuItem("粗体");

italic=new JCheckBoxMenuItem("斜体");

HMHandler HM=new HMHandler();
hong.addActionListener(HM);
lan.addActionListener(HM);
lv.addActionListener(HM);
huang.addActionListener(HM);
bold.addActionListener(HM);
italic.addActionListener(HM);
color.addActionListener(HM);

fontMenu.add(color);
fontMenu.add(bold);
fontMenu.add(italic);



fontlabel=new JMenu("字号(H)");

c1=new JComboBox(zh);
c1.setBackground(Color.green);
c1.setFont(new Font("宋体",Font.PLAIN,12));
c1.setMaximumRowCount(5);
CMHandler CM=new CMHandler();
c1.addActionListener(CM);
fontlabel.add(c1);

style=new JMenu("宇体样式(S)");
c2=new JComboBox(mz);
c2.setBackground(Color.green);
c2.setFont(new Font("宋体",Font.PLAIN,12));
c2.setMaximumRowCount(5);
SMHandler SM=new SMHandler();
c2.addItemListener(SM);
style.add(c2);

mb.add(fileMenu);
mb.add(editMenu);
mb.add(formatMenu);
mb.add(fontMenu);
mb.add(fontlabel);
mb.add(style);





toolBar =new JToolBar();
b1= new JButton(new ImageIcon("d:/img/open.gif"));
b2= new JButton(new ImageIcon("d:/img/save.gif"));
b3= new JButton(new ImageIcon("d:/img/copy.gif"));
b4= new JButton(new ImageIcon("d:/img/cut.gif"));
b5= new JButton(new ImageIcon("d:/img/paste.gif"));
TBHandler TB=new TBHandler();
b1.addActionListener(TB); b2.addActionListener(TB);
b3.addActionListener(TB); b4.addActionListener(TB);
b5.addActionListener(TB);

toolBar.add(b1); toolBar.add(b2);
toolBar.add(b3); toolBar.add(b4);
toolBar.add(b5);



pm =new JPopupMenu();
item1 = new JMenuItem("打开");
item2 = new JMenuItem("保存");
item3 = new JMenuItem("复制");
item4 = new JMenuItem("剪切");
item5 = new JMenuItem("粘贴");
JPHandler JP=new JPHandler();
item1.addActionListener(JP);
item2.addActionListener(JP);
item3.addActionListener(JP);
item4.addActionListener(JP);
item5.addActionListener(JP);
editor.addMouseListener(JP);
pm.add(item1); pm.add(item2);
pm.add(item3); pm.add(item4);
pm.add(item5);







setJMenuBar(mb);
c.add(toolBar,BorderLayout.NORTH);


setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}


private class CMHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==c1)
{
s=Integer.parseInt(zh[c1.getSelectedIndex()]);
editor.setFont(new Font(ss,b+i,s));
}
}
}


private class JMHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==fileMenuOpen) { loadFile(); }
else if(e.getSource()==fileMenuSave){ saveFile(); }
else{System.exit(0);}
}

}

public void loadFile()
{
JFileChooser fc=new JFileChooser();
int r=fc.showOpenDialog(this);
if(r==JFileChooser.APPROVE_OPTION)
{
File file=fc.getSelectedFile();
try{ editor.read(new FileReader(file),null);}
catch(IOException e){}
}
}

public void saveFile()
{
JFileChooser fc=new JFileChooser();
int r=fc.showSaveDialog(this);
if(r==JFileChooser.APPROVE_OPTION)
{
File file=fc.getSelectedFile();
try{ editor.write(new FileWriter(file));}
catch(IOException e){}
}
}



private class EMHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==editMenuCopy)
{
editor.copy();
editor.requestFocus();
}
else if(e.getSource()==editMenuCut)
{
editor.cut();
editor.requestFocus();
}
else
{
editor.paste();
editor.requestFocus();
}
}
}

private class FMHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==lineWrap){ editor.setLineWrap(true); }
else if(e.getSource()==cancleLineWrap) { editor.setLineWrap(false);}
else if(e.getSource()==wrapStyleWord) { editor.setWrapStyleWord(true);}
else{ editor.setWrapStyleWord(false); }
}
}



private class TBHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1){ loadFile(); }
else if(e.getSource()==b2) {saveFile();}
else if(e.getSource()==b3)
{
editor.copy();
editor.requestFocus();
}
else if(e.getSource()==b4)
{
editor.cut();
editor.requestFocus();
}
else
{
editor.paste();
editor.requestFocus();
}
}
}


private class JPHandler implements ActionListener,MouseListener
{
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==item1){ loadFile(); }
else if(e.getSource()==item2) {saveFile();}
else if(e.getSource()==item3)
{
editor.copy();
editor.requestFocus();
}
else if(e.getSource()==item4)
{
editor.cut();
editor.requestFocus();
}
else
{
editor.paste();
editor.requestFocus();
}
}

public void mouseReleased(MouseEvent e)
{
if(e.isPopupTrigger())
pm.show(editor,e.getX(),e.getY());
}

public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){}
}

public class HMHandler implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
String cmd=e.getActionCommand();
int b;
int i;
if(cmd.equals("红色"))
editor.setForeground(Color.red);
else if(cmd.equals("蓝色"))
editor.setForeground(Color.blue);
else if(cmd.equals("绿色"))
editor.setForeground(Color.green);
else if(cmd.equals("黄色"))
editor.setForeground(Color.yellow);
else if(cmd.equals("黑色"))
editor.setForeground(Color.black);
else if(cmd.equals("粗体"))
editor.setFont(new Font("宋体",Font.BOLD,s));
else if(cmd.equals("斜体"))
editor.setFont(new Font("宋体",Font.ITALIC,s));
}
}

public class SMHandler implements ItemListener
{
public void itemStateChanged(ItemEvent e)
{
if(e.getStateChange()==e.SELECTED)
{
ss=(String)c2.getSelectedItem();
editor.setFont(new Font(ss,b+i,s));
}
}
}

public static void main(String []args)
{
Nodepad N=new Nodepad();
}
}

 

标签:addActionListener,JMenuItem,private,add,editor,简单,new,记事本
From: https://www.cnblogs.com/xjt323/p/17433861.html

相关文章

  • 不要将你的 API 设计得过于简单
    关于软件工程的真相框架永无止境有多少框架、库和服务的存在仅仅是为了让你编写更少的代码?几乎所有的框架都是如此。为什么我们有这么多框架,每年还会出现一个新的?这是因为一个框架试图让系统变得简单,在这个过程中却导致了性能问题或编码上的不便。一个沮丧的用户说:“我要写......
  • Metabase可视化BI系统部署安装及简单使用
    Metabase是国外开源的一个可视化系统,语言使用了Clojure+TypeScript。Clojure(/ˈkloʊʒər/)是Lisp程式語言在Java平台上的現代、動態及函數式方言。来自维基百科。我也是第一次看到这个语言,知道它是可以运行在Java环境上的语言就可以了......
  • 好用的工作记事软件 好用的工作记事本APP
    有不少职场人士都表示,现在自己的工作是越来越忙了,并且随着工作任务的增加,经常会忘记重要的工作事项,这太影响工作了。不过在工作中使用一款工作记事本APP就能够帮助我们随时随地记录工作中的各种事情了,可以起到很好的备忘和提醒作用。那么好用的工作记事软件有哪些呢?有没有一款好......
  • Linux首次登录入与寻求帮助(Linux的简单使用)
    Linux首次登录入与寻求帮助一些Linux中使用的常用命令与技巧:进入终端系统方式(纯文本环境):按ctrl+alt+F2会进入tty2,同理F3~F7均可分别进入tty3~tty7,只有tty1是图形化界面(如果已经安装了图形界面了),在文本环境中按ctrl+alt+F1会进入图形化界面在文本模式注销......
  • PPO算法的一个简单实现:对话机器人
    综上,PPO算法是一种具体的Actor-Critic算法实现,比如在对话机器人中,输入的prompt是state,输出的response是action,想要得到的策略就是怎么从prompt生成action能够得到最大的reward,也就是拟合人类的偏好。具体实现时,可以按如下两大步骤实现首先定义4个模型:Actor(action_logits)、SFT(s......
  • Dummynet简单部署
    本文分享自天翼云开发者社区《Dummynet简单部署》,作者:凸凹部署流程^准备内核版本 ^参看系统内核版本uname-r 我们需要将ipfw编译成内核模块,请确保ipfw用到的内核源码版本同你linux系统运行内核版本一致。^编译dummynethttps://github.com/FS1360472174/dummynet.git 下......
  • DDD简单入门
    DDD入门DDD的理解领域模型(domainmodel)是对领域内的概念类或现实世界中对象的可视化表示。领域模型也称为概念模型、领域对象模型和分析对象模型。在传统的架构设计中,经常针对⼀些功能点争论“这个功能不应该我改,应该是你那边改”,最终被妥协改了之后都改不明⽩为什么这个......
  • 安卓逆向——frida安装及简单接口开发
    1.Frida安装在github下载,github.com/frida/frida/releases然后addpush(解压后得到的文件,单文件,重命名为frida-server)frida-server/data/local/tmpaddshellcd/data/local/tmpchmod777frida-server开启服务./frida-server另外开启一个cmd窗口,进入虚拟环境frida-ps-U验证是......
  • Spring下RestTempLate与Feign简单使用
    RestTempLate官网:RestTemplate:TheoriginalSpringRESTclientwithasynchronous,templatemethodAPI.从上面的介绍中我们可以知道:RestTemplate是一个同步的RestAPI客户端。如果您需要从应用程序中调用远程REST服务,则可以使用SpringFramework的RestTemplate类。......
  • HTML是什么、html简单介绍
    目录1.概念:是最基础的网页开发语言2.快速学习:3.标签学习:1.文件标签:构成html最基本的标签2.文本标签:和文本有关的标签3.图片标签:4.列表标签:5.链接标签:6.div和span:无任何样式,方便CSS控制7.语义化标签:无任何样式,方便CSS控制8.表格标签:1.概念:是最基础的网页开发语言  ......