zoukankan      html  css  js  c++  java
  • java 写的swing记事本

    最近用java写的swing源代码:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.*;
    public class Notepad3
    {
    	public static void main(String [] args)
    	{
    		Window mainWin = new Window("New - Notepad3");
    	}
    }
    
    class Window extends JFrame implements ActionListener
    {
    	JMenuBar menubar;
    	JTextArea mainText; 
    
    	JFileChooser openFile;
    	JFileChooser saveFile;
    
    	JPopupMenu contextMenu;
    	JMenuItem popupcopy, popupcut, popuppaste, popupdel;
    
    	JMenu file;
    	JMenuItem New, Open, Save, SaveAs, NewWindow, Encode, Exit;
    
    	JMenu edit;
    	JMenuItem redo, undo, cut, copy, paste, del, find, findNext, replace; 
    	String findStr = null; // 要查找的字符串-findStr
    
    	JMenu help;
    	JMenuItem about;
    
    	JMenu view;
    	JMenuItem font, linenum, wordCounts;
    	JCheckBoxMenuItem wordWrap;
    
    	//mainText上方的按钮,没有用处的
    	JButton buttonRun, buttonRun2;
    	Icon icon1;
    
    	//在mainText下面添加状态栏;
    	JLabel wordCount;
    
    	Window(String s)
    	{
    		setTitle(s);
    		setBounds(100,100,800,600);
    		setVisible(true);
    		setResizable(true);
    		{
    			//添加工具栏
    			menubar = new JMenuBar();
    			//添加菜单-文件
    			file = new JMenu("File");
    			New = new JMenuItem("New", new ImageIcon("new.gif"));
    			Open = new JMenuItem("Open", new ImageIcon("open.gif"));
    			Save = new JMenuItem("Save", new ImageIcon("save.gif"));
    			SaveAs = new JMenuItem("Save as", new ImageIcon("saveas.gif"));
    			NewWindow= new JMenuItem("New Window", new ImageIcon("newwindow.gif"));
    			Encode = new JMenuItem("Encode", new ImageIcon("encode.gif"));
    			Exit= new JMenuItem("Exit", new ImageIcon("exit.gif"));
    			New.setMnemonic('N');//为“新建”设置快捷键Ctrl+N		
    			New.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));  
    
    			Open.setAccelerator(KeyStroke.getKeyStroke('O'));
    			//		menuSave.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK));
    			openFile = new JFileChooser("d:/"); //打开文件夹的对象
    			file.add(New);
    			file.add(Open);
    			file.addSeparator();
    			file.add(Save);
    			file.add(SaveAs);
    			file.addSeparator();
    			file.add(NewWindow);
    			file.add(Encode);
    			file.add(Exit);
    			New.addActionListener(this);
    			Open.addActionListener(this);
    			Save.addActionListener(this);
    
    			//添加菜单-编辑
    			edit= new JMenu("Edit");
    			redo = new JMenuItem("Redo");
    			undo = new JMenuItem("Undo");
    			cut = new JMenuItem("Cut");
    			copy = new JMenuItem("Copy");
    			paste = new JMenuItem("Paste");
    			del= new JMenuItem("Delete");
    			find = new JMenuItem("Find");
    			findNext = new JMenuItem("FindNext");
    			replace = new JMenuItem("Replace");
    			edit.add(redo);
    			edit.add(undo);
    			edit.addSeparator();
    			edit.add(cut);
    			edit.add(copy);
    			edit.add(paste);
    			edit.add(del);
    			edit.addSeparator();
    			edit.add(find);
    			edit.add(findNext);
    			edit.add(replace);
    			copy.addActionListener(this);
    			cut.addActionListener(this);
    			paste.addActionListener(this);
    			del.addActionListener(this);
    			find.addActionListener(this);
    			findNext.addActionListener(this);
    			replace.addActionListener(this);
    
    			//添加菜单-View
    			view = new JMenu("View");
    			font = new JMenuItem("Font");
    			wordWrap = new JCheckBoxMenuItem("Word Wrap", false);
    			linenum = new JMenuItem("Line Numbers");
    			wordCounts= new JMenuItem("Word Counts");
    			view.add(font);
    			view.add(wordWrap);
    			view.addSeparator();
    			view.add(linenum);
    			view.add(wordCounts);
    			wordCounts.addActionListener(this);
    			wordWrap.addActionListener(this);
    
    			//添加菜单-Help
    			help = new JMenu("Help");
    			about = new JMenuItem("About");
    			help.add(about);
    			about.addActionListener(this);
    
    			//添加到菜单栏
    			menubar.add(file);
    			menubar.add(edit);
    			menubar.add(view);
    			menubar.add(help);
    			setJMenuBar(menubar);
    		}
    		//添加文本区域
    		mainText = new JTextArea("haha");
    		//添加文本区域到窗口,并增加滚动条
    		add(new JScrollPane(mainText), BorderLayout.CENTER);
    		//右键显示的监听事件
    		mainText.addMouseListener(new MouseAdapter(){
    			public void mousePressed(MouseEvent e){
    				if(e.getModifiers()==InputEvent.BUTTON3_MASK)
    			contextMenu.show(mainText,e.getX(),e.getY());
    			}
    		});
    		//添加右键菜单项目
    		JPopupMenu contextMenu = new JPopupMenu();
    		popupcopy = new JMenuItem("copy");
    		popupcut = new JMenuItem("cut");
    		popuppaste = new JMenuItem("paste");
    		popupdel = new JMenuItem("Delete");
    		contextMenu.add(popupcut);
    		contextMenu.add(popupcopy);
    		contextMenu.add(popuppaste);
    		contextMenu.add(popupdel);
    		popupcopy.addActionListener(this);
    		popupcut.addActionListener(this);
    		popuppaste.addActionListener(this);
    		popupdel.addActionListener(this);
    
    		icon1= new ImageIcon("a.jag");
    		buttonRun = new JButton(icon1);
    		buttonRun.setMnemonic('d');
    		add(buttonRun,BorderLayout.NORTH);
    		buttonRun.addActionListener(this);
    
    		wordCount = new JLabel("本文共" + mainText.getText().length() + "个字");
    		add(wordCount,BorderLayout.SOUTH);
    
    		validate();
    		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    	}
    	public void actionPerfoemed(ActionEvent e)
    	{
    		int i=0;
    		i=(i+1)%2;
    		if(i==1)
    			buttonRun.setIcon(icon1);
    	}
    	//文本区域的监听事件
    	public void actionPerformed(ActionEvent e)
    	{
    		if (e.getSource()==copy || e.getSource()==popupcopy)
    			mainText.copy();
    		else if (e.getSource()==cut || e.getSource()==popupcut)
    			mainText.cut();
    		else if (e.getSource()==paste || e.getSource()==popuppaste)
    			mainText.paste();
    		else if (e.getSource()==wordCounts)
    			wordCount.setText("本文共" + mainText.getText().length() + "个字");
    		else if (e.getSource()==about)
    			JOptionPane.showConfirmDialog(this, "\n          Power By Yantze\n     mail:yantze@126.com", "关于", JOptionPane.CLOSED_OPTION );
    		else if (e.getSource()==wordWrap)
    			mainText.setLineWrap(!mainText.getLineWrap()); 
    		else if (e.getSource()==del || e.getSource() == popupdel)
    			mainText.replaceRange("",mainText.getSelectionStart(),mainText.getSelectionEnd()); //删除选中的文本
    		else if (e.getSource()==find || e.getSource()==findNext)//实现查找和查找下一个的功能
    		{
    			if(findStr==null || e.getSource()==find )
    			{ 
    				findStr= JOptionPane.showInputDialog(this, "请输入要找的字符串(Regex-open)!"); 
    				if ((findStr!=null)&&!mainText.equals(""))
    				{ 
    					int position =mainText.getText().indexOf(findStr); 
    					if(position!=-1)
    					{
    						mainText.setSelectionStart(position); 
    						mainText.setSelectionEnd(position + findStr.length()); 
    					} 
    					else JOptionPane.showMessageDialog(this, "未查找到字符串!"); 
    				}
    			}
    			else
    			{ 
    				if ((findStr!=null)&&!findStr.equals(""))
    				{
    					int position = mainText.getText().indexOf(findStr, mainText.getSelectionStart()+1) ; 
    					if(position!=-1){ 
    						mainText.setSelectionStart(position); 
    						mainText.setSelectionEnd(position+findStr.length()); 
    					} 
    					else JOptionPane.showMessageDialog(this, "不存在要查找的字符串!");    
    				}
    			}
    		}
    		else if(e.getSource()==replace){
    			findStr = null; 
    			String replaceStr; 
    			String str; 
    			findStr= JOptionPane.showInputDialog(this, "请输入替换的字符串!(Regex-open)"); 
    			if ((findStr!=null)&&!mainText.equals("")){ 
    				int position =mainText.getText().indexOf(findStr); 
    				if(position!=-1){ 
    					mainText.setSelectionStart(position); 
    					mainText.setSelectionEnd(position+findStr.length()); 
    					replaceStr = JOptionPane.showInputDialog(this,"请输入替换的字符串!"); 
    					if(replaceStr!=null){ 
    						str = mainText.getText().replace(findStr, replaceStr); 
    						mainText.setText(str); 
    					} 
    				} 
    				else JOptionPane.showMessageDialog(this, "没有你要替换的字符串"); 
    			}
    			else 
    				JOptionPane.showMessageDialog(this, "没有你想替换的的字符!"); 
    		} 
    		else if (e.getSource()==New)
    		{
    			int n=JOptionPane.showConfirmDialog(this,"在新建之前,想保存文件吗?","新建文档",JOptionPane.YES_NO_CANCEL_OPTION);
    			if(n == JOptionPane.YES_OPTION)
    			{
    				mainText.setText(null);
    			}
    			if(n == JOptionPane.NO_OPTION)
    			{
    				mainText.setText(null);
    			}
    		}
    		else if (e.getSource()==Open)
    		{
    			int n = openFile.showOpenDialog(null);
    			if (n == JFileChooser.APPROVE_OPTION) //这段代码用到了java.io.*;
    			{
    				File file = openFile.getSelectedFile();
    				try
    				{
    					FileReader readFile = new FileReader(file);
    					BufferedReader in = new BufferedReader(readFile);
    					String s = null;
    					while ((s=in.readLine()) != null)
    						mainText.append(s + "\n");
    				}
    				catch(IOException ee){}
    			}
    		}
    		else if (e.getSource()==Save)
    		{
    			/*
    			   saveFile = new JFileChooser();
    			   saveFile .setApproveButtonText("确定");
    			   saveFile .setDialogTitle("另存为");
    			   int result = saveFile.showSaveDialog(this);
    			   if (result == JFileChooser.CANCEL_OPTION) {
    			   statusLabel.setText("没有选择任何文件");
    			   return;
    			   }
    			   File saveFileName = fileChooser.getSelectedFile();
    			   if (saveFileName == null || saveFileName.getName().equals(""))
    			   JOptionPane.showMessageDialog(this, "不合法的文件名", "不合法的文件名",
    			   JOptionPane.ERROR_MESSAGE);
    			   else {
    			   try {
    			   FileWriter fw = new FileWriter(saveFileName);
    			   BufferedWriter bfw = new BufferedWriter(fw);
    			   bfw.write(mainText.getText(), 0, mainText.getText().length());
    			   bfw.flush();
    			   fw.close();
    			   isNewfile = false;
    			   file = saveFileName;
    			   oldValue = tex.getText();
    			   statusLabel.setText(" 当前打开文件:" + saveFileName.getAbsoluteFile());
    			   } catch (IOException ioException) {
    			   }
    			   }
    			   */
    			try{
    				int result = saveFile.showSaveDialog(this);
    				saveFile.setApproveButtonText("确定");
    				File save = saveFile.getSelectedFile();
    				FileWriter writeOut = new FileWriter(save);
    				writeOut.write(mainText.getText());
    				writeOut.flush();
    				writeOut.close();
    			}catch (IOException eee){
    				System.out.println("Error writing file");
    			}
    		}
    	}
    }
    

      效果图:

  • 相关阅读:
    CVE-2017-11826:Office Open XML 标签嵌套解析混淆漏洞
    未授权访问漏洞总结
    Linux提权—脏牛漏洞(CVE-2016-5195)
    Linux提权
    (翻译)OpenDocument and Open XML security (OpenOffice.org and MS Office 2007)
    SSH后门万能密码
    Linux中使用gdb dump内存
    在 x64dbg 中设置条件断点和条件记录断点
    Linux中的.bash_ 文件详解
    Photoshop 第二课 工具-钢笔的使用
  • 原文地址:https://www.cnblogs.com/vastiny/p/2768141.html
Copyright © 2011-2022 走看看