import com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
/*
* JHamming.java
*
* Created on 23-giu-2010, 14.00.25
*/
/**
*
* @author Paolo
*/
public class JHamming
extends javax.
swing.
JFrame {
private Hamming control;
/** Creates new form JHamming */
public JHamming() {
try {
UIManager.
setLookAndFeel(new NimbusLookAndFeel
());
}
initComponents();
this.control = new Hamming(null);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
hammingLabel
= new javax.
swing.
JLabel();
controlla
= new javax.
swing.
JButton();
result
= new javax.
swing.
JLabel();
resultLabel
= new javax.
swing.
JLabel();
correct
= new javax.
swing.
JLabel();
correctLabel
= new javax.
swing.
JLabel();
setTitle("JHamming coltrol - by Paolo Ricciuti (C)");
setResizable(false);
hammingLabel.setText("Hamming codeword: ");
codeword.
addCaretListener(new javax.
swing.
event.
CaretListener() {
public void caretUpdate
(javax.
swing.
event.
CaretEvent evt
) {
codewordCaretUpdate(evt);
}
});
controlla.setText("Controlla");
controlla.setEnabled(false);
public void actionPerformed
(java.
awt.
event.
ActionEvent evt
) {
controllaActionPerformed(evt);
}
});
result.setText("Risultato della comparazione: ");
correct.setText("Stringa corretta:");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(result)
.addGap(18, 18, 18)
.
addComponent(resultLabel, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(correct)
.addGap(18, 18, 18)
.
addComponent(correctLabel, javax.
swing.
GroupLayout.
DEFAULT_SIZE, javax.
swing.
GroupLayout.
DEFAULT_SIZE,
Short.
MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(hammingLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(codeword, javax.swing.GroupLayout.PREFERRED_SIZE, 188, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(controlla)
.
addContainerGap(50,
Short.
MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(hammingLabel)
.addComponent(codeword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(controlla))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(result)
.addComponent(resultLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(correct)
.addComponent(correctLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
.
addContainerGap(31,
Short.
MAX_VALUE))
);
java.
awt.
Dimension screenSize
= java.
awt.
Toolkit.
getDefaultToolkit().
getScreenSize();
setBounds((screenSize.width-453)/2, (screenSize.height-167)/2, 453, 167);
}// </editor-fold>//GEN-END:initComponents
private void codewordCaretUpdate
(javax.
swing.
event.
CaretEvent evt
) {//GEN-FIRST:event_codewordCaretUpdate
String testo
= this.
codeword.
getText();
this.control.setCode(testo);
if (this.control.isBinaryNum() && !testo.isEmpty()) {
this.controlla.setEnabled(true);
} else {
this.controlla.setEnabled(false);
}
}//GEN-LAST:event_codewordCaretUpdate
private void controllaActionPerformed
(java.
awt.
event.
ActionEvent evt
) {//GEN-FIRST:event_controllaActionPerformed
String risultato
= this.
control.
controlla();
int errato = binToDec(risultato);
int leng=risultato.length();
if(errato>=leng){
for(int i=0; i<risultato.length(); i++){
if(risultato.charAt(i)=='0'){
check=check+"1";
}else{
check=check+"0";
}
}
risultato=check;
errato=binToDec(risultato);
}
this.resultLabel.setText(risultato);
risultato = this.codeword.getText();
if (errato != 0) {
risultato= segnalaErrore(risultato, errato);
risultato = "<html>" + risultato + "</html>";
}
this.correctLabel.setText(risultato);
}//GEN-LAST:event_controllaActionPerformed
private static String segnalaErrore
(String pString,
int pErrato
){
int leng=pString.length();
for(int i=leng-1; i>=0; i--){
if(leng-i==pErrato){
char corretto='0';
if(pString.charAt(i)=='0'){
corretto='1';
}
retval="<font color=\"red\">"+corretto+"</font>"+retval;
}else{
retval=pString.charAt(i)+retval;
}
}
return retval;
}
private static int binToDec
(String pString
) {
int leng = pString.length();
int valore = 0;
for (int i = leng - 1; i >= 0; i--) {
if (pString.charAt(i) == '1') {
int elevazione
= (int) Math.
pow(2.0, leng
- 1
- i
);
valore = valore + elevazione;
}
}
return valore;
}
/**
* @param args the command line arguments
*/
public static void main
(String args
[]) {
public void run() {
new JHamming().setVisible(true);
}
});
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.
swing.
JButton controlla
;
private javax.
swing.
JLabel correct
;
private javax.
swing.
JLabel correctLabel
;
private javax.
swing.
JLabel hammingLabel
;
private javax.
swing.
JLabel result
;
private javax.
swing.
JLabel resultLabel
;
// End of variables declaration//GEN-END:variables
}