📄 rsapplet.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 + -