Huffman by jcreator

Section two

//--------------------------------------------------------------------------------
// Huffman树的建立
class Huffman
{
   public TreeNode tree; //结点对象
   public Table t;       //频率表对象
   public PQueue p;      //优先级队列
   private int depth;    //深度
   char markerChar =       insertRep(tree.left, tab, n, s1); // 对左子树进行递归操作
      s2 = repr;
      s2 += "1";                        //右1
      insertRep(tree.right, tab, n, s2); // 对右子树进行递归操作
   }
}
//--------------------------------------------------------------------------------
// 窗口类的建立
class WindowGrid extends JFrame implements ActionListener
{
 Huffman huff;                 //创建Huffman实例
 boolean flag;                 //用于标志判断是否已经打开记录文件的标志符号
 int record;                   //用于保存引入记录文件的数值变量
 JButton buttoninput;          //输入按钮
 JButton buttonreset;          //重置按钮
 JButton buttonrecode;         //反编码按钮
 JTextArea textinput;          //输入文本框
 JTextArea textoutput;         //输出文本框
 JLabel labelinput;            //输入标签
 JLabel labeloutput;           //输出标签
 JLabel labeltable;            //表格标签   
 JTable table;                 //表格控件
 Object data[][];              //用于表格控件的存放数据
 Object name[];                //属性名称
 /工具条对象
 JMenuBar menubar;             //工具条
 JMenu menu_file;              //文件菜单栏目
 JMenuItem item_open;          //打开项目,用于打开要编码的文件
 JMenuItem item_save;          //保存项目
 JMenuItem item_exit;          //退出项目
 JMenuItem item_open_binary;   //打开二进制项目,用于打开反编码的文件
 JMenuItem item_open_record;   //打开记录补0的位数的项目
 JMenu menu_edit;              //编辑菜单拦目
 JMenuItem item_copy;          //复制项目
 JMenuItem item_cut;           //剪切项目
 JMenuItem item_paste;         //粘贴项目
 ///滚动条
 JScrollPane scrollpane_input;   //输入文本框的滚动条
 JScrollPane scrollpane_output;  //输出文本框的滚动条
 JScrollPane scrollpane_table;   //列表的滚动条
 //文件对话框
 JFileChooser filechooser;       //文件选择对话框
 Container contenetPane = this.getContentPane();  //创建容器实例  
 //构造方法
 WindowGrid(String s)
 {
  super(s);
        contenetPane.setLayout(null);                    //设置为空布局
        menubar = new JMenuBar();
        menu_file = new JMenu("文件");
        item_open = new JMenuItem("打开编码文件");
        item_save = new JMenuItem("保存");
        item_open_binary = new JMenuItem("打开2进制文件");   //这两种打开文件的方式没有设置快捷键
        item_open_record = new JMenuItem("打开记录文件");
        menu_edit = new JMenu("编辑");
        item_copy = new JMenuItem("复制");
        item_cut = new JMenuItem("剪切");
        item_paste = new JMenuItem("粘贴");
        item_exit = new JMenuItem("退出");
        filechooser = new JFileChooser("c:/");         //设置初始路径
        flag = false;                                  //设置没有引入记录文件
        item_open.setAccelerator(KeyStroke.getKeyStroke('o'));  //设置快捷键
        item_save.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));
        item_exit.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E,InputEvent.CTRL_MASK));
        item_copy.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));
        item_cut.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
        item_paste.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));
        menu_file.add(item_open);                             //添加组件
        menu_file.addSeparator();                             //分隔符
        menu_file.add(item_open_binary);
        menu_file.addSeparator();
        menu_file.add(item_open_record);
        menu_file.addSeparator();
        menu_file.add(item_save);
        menu_file.addSeparator();
        menu_file.add(item_exit);        
        menu_edit.add(item_copy);
        menu_edit.addSeparator();
        menu_edit.add(item_cut);
        menu_edit.addSeparator();
        menu_edit.add(item_paste);                 
        menubar.add(menu_file);
        menubar.add(menu_edit);
        setJMenuBar(menubar);
  buttoninput = new JButton("编码");
  buttoninput.setBounds(100,400,150,50);           //X,Y,WIDTH,HEIGHT 设置大小和显示位置
  buttonreset = new JButton("重置");
  buttonreset.setBounds(700,400,150,50);           //X,Y,WIDTH,HEIGHT 设置大小和显示位置
  buttonrecode = new JButton("反编码");           
  buttonrecode.setBounds(380,400,150,50);          //X,y,Width,Height
  textinput = new JTextArea();
  textoutput = new JTextArea();
  labelinput = new JLabel("请在此输入要输入的字符串",JLabel.CENTER);
  labelinput.setBounds(100,50,200,50);
  labeloutput = new JLabel("您输入的字符串编码后的结果为",JLabel.CENTER);
  labeloutput.setBounds(100,150,200,50);
  labeltable = new JLabel("输入字符串编码信息表:",JLabel.CENTER);
        name = new Object[3];//存储表格空间的列显示
        name[0] = "字符";
        name[1] = "频率";
        name[2] = "编码结果";
  buttoninput.addActionListener(this);             //为按钮添加事件监视器 
  buttonreset.addActionListener(this);    
  buttonrecode.addActionListener(this);
  item_copy.addActionListener(this);
  item_cut.addActionListener(this);
  item_paste.addActionListener(this);
  item_open.addActionListener(this);
  item_save.addActionListener(this);
  item_exit.addActionListener(this);
  item_open_binary.addActionListener(this);
  item_open_record.addActionListener(this);
  scrollpane_input = new JScrollPane(textinput);
  scrollpane_output = new JScrollPane(textoutput);
  scrollpane_input.setBounds(300,50,400,80); 
  scrollpane_output.setBounds(300,150,400,80);
  contenetPane.add(scrollpane_input);              //添加各个组件
  contenetPane.add(scrollpane_output);
  contenetPane.add(labelinput);
  contenetPane.add(labeloutput);
  contenetPane.add(buttoninput);                 
  contenetPane.add(buttonreset);   
  contenetPane.add(buttonrecode);  
  contenetPane.validate();
  setBounds(0,0,1000,600);        //x,y,kuan,gao
  setVisible(true);
  setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);  
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值