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

📄 rsapplet.java

📁 reed-solomon编码的java实现
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

import fieldFrame;
import RSFrame;

/**
 * Reed-Solomon coding/decoding demonstrator Applet.
 *
 * An applet for demonstration and understand Reed-Solomon codes.
 * Galois field and coding/decoding Reed-Solomon codes in individual frames.
 * See the "http://diwww.epfl.ch/~barras/projet/index.html" for details 
 * and updates.
 *
 * @author Benjamin Barras
 * @version 1.10, 13/02/99
 * @email benjamin.barras@epfl.ch * */

public class RSApplet extends Applet 
  implements ActionListener,AdjustmentListener
{
  int nMin,nMax,tMax,kMin;
  int n,k,t,generator;
  field gf = new field();

  Button buttonField = new Button("Field");
  Button buttonRS = new Button("Reed-Solomon");
  Button buttonNext = new Button("Next");
  Label labelN = new Label("n = ");
  Label labelK = new Label("k = ");
  Label labelT = new Label("t = ");
  Label labelGenerator = new Label("Generator = ");
  Scrollbar scrollbarN;
  Scrollbar scrollbarK;
  Scrollbar scrollbarT;
  TextField textFieldN = new TextField(10);
  TextField textFieldK = new TextField(10);
  TextField textFieldT = new TextField(10);
  TextField textFieldGenerator = new TextField(50);
  fieldFrame windowField; 
  RSFrame windowRS; 

  public void init()
  {
    int i;
    double d;
    Double D;
    String str = new String("");

    n = 15;
    k = 4;
    t = 3;
    nMin = (2 * t) + 1;
    tMax = (int) (n-1) / 2;
    nMax = (1 << k) - 1;
    d = Math.log(n) / Math.log(2);
    D = new Double(d);
    kMin = (int) D.intValue() + 1;

    Panel row1 = new Panel(); 
    Panel row2 = new Panel(); 
    Panel row3 = new Panel(); 
    Panel row4 = new Panel(); 

    setFont(new Font("Helvetica",Font.PLAIN,14));
    setLayout(new GridLayout(4,1,10,10));
    row1.setLayout(new FlowLayout());
    row2.setLayout(new FlowLayout());
    row3.setLayout(new FlowLayout());

    str = Integer.toString(n,10);
    textFieldN.setText(str);
    textFieldN.setEditable(false);

    str = Integer.toString(k,10);
    textFieldK.setText(str);
    textFieldK.setEditable(false);

    str = Integer.toString(t,10);
    textFieldT.setText(str);
    textFieldT.setEditable(false);

    scrollbarN = new Scrollbar(Scrollbar.VERTICAL,n,1,nMin,nMax);
    scrollbarN.addAdjustmentListener(this);
    scrollbarK = new Scrollbar(Scrollbar.VERTICAL,k,1,kMin,32);
    scrollbarK.addAdjustmentListener(this);
    scrollbarT = new Scrollbar(Scrollbar.VERTICAL,t,1,0,tMax + 1);
    scrollbarT.addAdjustmentListener(this);

    generator = gf.searchPrimitive(k,0);
    str = gf.polynomialToString(generator,"X");
    textFieldGenerator.setText(str);

    buttonNext.addActionListener(this);
    buttonField.addActionListener(this);
    buttonRS.addActionListener(this);

    row2.add(labelN);
    row2.add(textFieldN);
    row2.add(scrollbarN);
    row2.add(labelK);
    row2.add(textFieldK);
    row2.add(scrollbarK);
    row2.add(labelT);
    row2.add(textFieldT);
    row2.add(scrollbarT);

    row3.add(buttonNext);
    row3.add(textFieldGenerator);

    row4.add(buttonField);
    row4.add(buttonRS);

    add(row1);
    add(row2);
    add(row3);
    add(row4);
    doLayout();
  }

  public void actionPerformed(ActionEvent evt)
  {
    int i;
    String str;

    Object source = evt.getSource();
    if (source == buttonField)
    { 
      windowField = new fieldFrame(k,generator);
      windowField.addWindowListener(windowField);
    }
    if (source == buttonRS)
    { 
      windowRS = new RSFrame(n,k,t,generator);
      windowRS.addWindowListener(windowRS);
    }
    if (source == buttonNext)
    {
      generator = gf.searchPrimitive(k,generator);
      str = gf.polynomialToString(generator,"X");
      textFieldGenerator.setText(str); 
    }
  }

  public void adjustmentValueChanged(AdjustmentEvent evt)

  {
    int i;
    double d;
    Double D;
    String str;

    Object source = evt.getAdjustable();
    if (source == scrollbarN) 
    {       
      n = evt.getValue();
      str = Integer.toString(n,10);
      textFieldN.setText(str); 
      tMax = (int) (n-1) / 2;
      scrollbarT.setMaximum(tMax + 1);
      d = Math.log(n) / Math.log(2);
      D = new Double(d);
      kMin = (int) D.intValue() + 1;
      scrollbarK.setMinimum(kMin);
    }
    if (source == scrollbarK) 
    {       
      k = evt.getValue();
      str = Integer.toString(k,10);
      textFieldK.setText(str);
      generator = gf.searchPrimitive(k,0);
      str = gf.polynomialToString(generator,"X");
      textFieldGenerator.setText(str);
      nMax = (1 << k) - 1;
      scrollbarN.setMaximum(nMax + 1);   
    }
    if (source == scrollbarT) 
    {       
      t = evt.getValue();      
      str = Integer.toString(t,10);
      textFieldT.setText(str);  
      nMin = (2 * t) + 1;
      scrollbarN.setMinimum(nMin);
    }
  }

  public void paint(Graphics g)
  {
  }

}

⌨️ 快捷键说明

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