⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mymenu.java

📁 利用JAVA 实现的 霍夫曼编码压缩解压缩算法
💻 JAVA
字号:
package compress;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JSeparator;

public class MyMenu extends JMenuBar implements ActionListener
{
	MyFrame MF;
	
	private JMenu File=new JMenu();
	private JMenu Help=new JMenu();
	private JMenu Open=new JMenu();
	private JMenuItem Compress=new JMenuItem();
	private JMenuItem Decompress=new JMenuItem();
	private JMenuItem See2=new JMenuItem();
	private JMenuItem Seeh=new JMenuItem();
	private JMenuItem Stat=new JMenuItem();
	private JMenuItem result=new JMenuItem();
	private JMenuItem Exit=new JMenuItem();
	private JMenuItem HowToUse=new JMenuItem();
	private JMenuItem About=new JMenuItem();
	private JMenuItem NewFile=new JMenuItem();
	private JMenuItem CompressFile=new JMenuItem();
	private JSeparator JS=new JSeparator();
	public MyMenu() 
	{
		File.setText("File");
		Help.setText("Help");
		Open.setText("Open");
		Compress.setText("Compress");
		Decompress.setText("Decompress");
		See2.setText("See2");
		Seeh.setText("Seeh");
		Stat.setText("Stat.");
		result.setText("Result");
		HowToUse.setText("How To Use...");
		About.setText("About...");
		NewFile.setText("NewFile");
		CompressFile.setText("CompressFile");
		Exit.setText("Exit");
		
		File.add(Open);
		File.add(JS);
		File.add(Compress);
		File.add(Decompress);
		File.add(JS);
		File.add(See2);
		File.add(Seeh);
		File.add(Stat);
		File.add(result);
		File.add(JS);
		File.add(Exit);
		Help.add(HowToUse);
		Help.add(JS);
		Help.add(About);
		Open.add(NewFile);
		Open.add(CompressFile);
		
		NewFile.addActionListener(this);
		CompressFile.addActionListener(this);
		Compress.addActionListener(this);
		Decompress.addActionListener(this);
		See2.addActionListener(this);
		Seeh.addActionListener(this);
		Stat.addActionListener(this);
		result.addActionListener(this);
		HowToUse.addActionListener(this);
		About.addActionListener(this);
		Exit.addActionListener(this);
		
		this.add(File);
		this.add(Help);
	}
	public void actionPerformed(ActionEvent evt) //目录按钮的监听器,调入事件反馈不同的响应
		{
			Object choose=evt.getSource();
			if(choose==NewFile)
				{
					MF.MS.MD.setDirName(MF.Road.getText());
					MF.MS.MD.setFileName1(MF.File.getText());
					MF.MS.RunCompress();
				}
			if(choose==CompressFile)
				{
					MF.MS.MD.setDirName(MF.Road.getText());
					MF.MS.MD.setFileName1(MF.File.getText());
					MF.MS.RunDecompress();
				}
			if(choose==Compress)
				{
					MF.MS.MD.setDirName(MF.Road.getText());
					MF.MS.MD.setFileName2(MF.File.getText());
					MF.MS.MD.setHuffman("");
					MF.MS.changetohuffman();
					MF.MS.MD.addHuffman(MF.MS.toString(MF.MS.outstring));
					MF.MS.MD.addHuffman("\n");
					MF.MS.MD.addHuffman(MF.MS.MD.wStat);
					MF.MS.MD.addHuffman("\n");
					MF.MS.MD.addHuffman(MF.MS.end);
					MF.MS.MD.addHuffman("\n");
					MF.MS.MD.addHuffman(MF.MS.MD.cStat);
					MF.MS.MD.Compress();
				}
			
			if(choose==Decompress)
				{
					MF.MS.MD.setDirName(MF.Road.getText());
					MF.MS.MD.setFileName2(MF.File.getText());
					MF.MS.MD.setArticle("");
					MF.MS.changetotext();
					MF.MS.MD.addArticle(MF.MS.toString(MF.MS.textchar));
					MF.MS.MD.Decompress();
				}
			
			if(choose==See2)
				{
					MF.MS.changetohuffman();
					String s="";
					for(int i=0;i<MF.MS.texthuffman.length();i++)
						{
							s=s+MF.MS.texthuffman.charAt(i);
							if(i%40==0)
								s=s+"\n";
						}
					MF.Result.setText(s);
				}
			
			if(choose==Seeh)
				{
					MF.MS.outhuffman();
					String s="";
					for(int i=0;i<MF.MS.huffman.length();i++)
						{
							s=s+MF.MS.huffman.charAt(i);
							if(i%40==0)
								s=s+"\n";
						}
					MF.Result.setText(s);
				}
			
			if(choose==Stat)
				{
					MF.MS.outnumber();
					String s="";
					for(int i=0;i<MF.MS.number.length();i++)
						{
							s=s+MF.MS.number.charAt(i);
							if(i%40==0)
								s=s+"\n";
						}
					MF.Result.setText(s);
				}
			if(choose==result)
				{
					int a=MF.MS.MD.getHuffman().length()*100/MF.MS.MD.getArticle().length();
					Integer b=new Integer(a);
					String s=b.toString();
					MF.Result.setText(s+"%");
				}
			if(choose==HowToUse)
				{
					JOptionPane.showMessageDialog(this,
							 " 压缩过程:"  +"\n"
							+"    在下面前一方框内写出文件路径,后一方框写入文件名(包括扩展名)" +"\n"
							+"    点选Open中的NewFile,表示打开了该文件" +"\n"
							+"    接着同样在方框内输入新的文件地址及文件名,此名可以不存在" +"\n"
							+"    点选Compress,即在刚在输入的地址处生成了该名的压缩文件" +"\n"
							+" 解压过程:" +"\n"
							+"    在下面前一方框内写出文件路径,后一方框写入文件名(此文件为压缩后文件)" +"\n"
							+"    点选Open中的CompressFile,表示打开了该压缩文件" +"\n"
							+"    接着同样在方框内输入新的文件地址及文件名,此名可以不存在" +"\n"
							+"    点选Decompress,即在刚在输入的地址处生成了该名的原文件" +"\n"
							+" See2(仅在打开源文件时应用):"+"\n"
							+" 	  查看该文件的2进制编码(显示在下面的方框内)"+"\n"
							+" Seeh(仅在打开源文件时应用):"+"\n"
							+" 	  查看该文件的每个字符的huffman编码(显示在下面的方框内)"+"\n"
							+" Result(仅在打开源文件后且生成压缩文件后应用):"+"\n"
							+" 	  显示压缩文件和源文件的压缩百分比(显示在下面的方框内)"+"\n");					
				}
			
			if(choose==About)
				{
					JOptionPane.showMessageDialog(this,"        压缩解压软件  "  +"\n"+"  陈春艳  050702228");					
				}
			
			if(choose==Exit)
				{
					System.exit(0);
				}
		}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -