JHamming - JHamming.java
Cerca
 











JHamming.java

Caricato da: Paoloricciuti
Scarica il programma completo

  1. import com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel;
  2. import javax.swing.UIManager;
  3. import javax.swing.UnsupportedLookAndFeelException;
  4.  
  5. /*
  6.  * To change this template, choose Tools | Templates
  7.  * and open the template in the editor.
  8.  */
  9.  
  10. /*
  11.  * JHamming.java
  12.  *
  13.  * Created on 23-giu-2010, 14.00.25
  14.  */
  15. /**
  16.  *
  17.  * @author Paolo
  18.  */
  19. public class JHamming extends javax.swing.JFrame {
  20.  
  21.     private Hamming control;
  22.  
  23.     /** Creates new form JHamming */
  24.     public JHamming() {
  25.         try {
  26.             UIManager.setLookAndFeel(new NimbusLookAndFeel());
  27.         } catch (UnsupportedLookAndFeelException ex) {
  28.         }
  29.         initComponents();
  30.         this.control = new Hamming(null);
  31.     }
  32.  
  33.     /** This method is called from within the constructor to
  34.      * initialize the form.
  35.      * WARNING: Do NOT modify this code. The content of this method is
  36.      * always regenerated by the Form Editor.
  37.      */
  38.     @SuppressWarnings("unchecked")
  39.     // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
  40.     private void initComponents() {
  41.  
  42.         hammingLabel = new javax.swing.JLabel();
  43.         codeword = new javax.swing.JTextField();
  44.         controlla = new javax.swing.JButton();
  45.         result = new javax.swing.JLabel();
  46.         resultLabel = new javax.swing.JLabel();
  47.         correct = new javax.swing.JLabel();
  48.         correctLabel = new javax.swing.JLabel();
  49.  
  50.         setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
  51.         setTitle("JHamming coltrol - by Paolo Ricciuti (C)");
  52.         setResizable(false);
  53.  
  54.         hammingLabel.setText("Hamming codeword: ");
  55.  
  56.         codeword.addCaretListener(new javax.swing.event.CaretListener() {
  57.             public void caretUpdate(javax.swing.event.CaretEvent evt) {
  58.                 codewordCaretUpdate(evt);
  59.             }
  60.         });
  61.  
  62.         controlla.setText("Controlla");
  63.         controlla.setEnabled(false);
  64.         controlla.addActionListener(new java.awt.event.ActionListener() {
  65.             public void actionPerformed(java.awt.event.ActionEvent evt) {
  66.                 controllaActionPerformed(evt);
  67.             }
  68.         });
  69.  
  70.         result.setText("Risultato della comparazione: ");
  71.  
  72.         correct.setText("Stringa corretta:");
  73.  
  74.         javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
  75.         getContentPane().setLayout(layout);
  76.         layout.setHorizontalGroup(
  77.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  78.             .addGroup(layout.createSequentialGroup()
  79.                 .addContainerGap()
  80.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
  81.                     .addGroup(layout.createSequentialGroup()
  82.                         .addComponent(result)
  83.                         .addGap(18, 18, 18)
  84.                         .addComponent(resultLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  85.                     .addGroup(layout.createSequentialGroup()
  86.                         .addComponent(correct)
  87.                         .addGap(18, 18, 18)
  88.                         .addComponent(correctLabel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
  89.                     .addGroup(layout.createSequentialGroup()
  90.                         .addComponent(hammingLabel)
  91.                         .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
  92.                         .addComponent(codeword, javax.swing.GroupLayout.PREFERRED_SIZE, 188, javax.swing.GroupLayout.PREFERRED_SIZE)))
  93.                 .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
  94.                 .addComponent(controlla)
  95.                 .addContainerGap(50, Short.MAX_VALUE))
  96.         );
  97.         layout.setVerticalGroup(
  98.             layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
  99.             .addGroup(layout.createSequentialGroup()
  100.                 .addContainerGap()
  101.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  102.                     .addComponent(hammingLabel)
  103.                     .addComponent(codeword, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
  104.                     .addComponent(controlla))
  105.                 .addGap(18, 18, 18)
  106.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  107.                     .addComponent(result)
  108.                     .addComponent(resultLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
  109.                 .addGap(18, 18, 18)
  110.                 .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
  111.                     .addComponent(correct)
  112.                     .addComponent(correctLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE))
  113.                 .addContainerGap(31, Short.MAX_VALUE))
  114.         );
  115.  
  116.         java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
  117.         setBounds((screenSize.width-453)/2, (screenSize.height-167)/2, 453, 167);
  118.     }// </editor-fold>//GEN-END:initComponents
  119.  
  120.     private void codewordCaretUpdate(javax.swing.event.CaretEvent evt) {//GEN-FIRST:event_codewordCaretUpdate
  121.         String testo = this.codeword.getText();
  122.         this.control.setCode(testo);
  123.         if (this.control.isBinaryNum() && !testo.isEmpty()) {
  124.             this.controlla.setEnabled(true);
  125.         } else {
  126.             this.controlla.setEnabled(false);
  127.         }
  128.     }//GEN-LAST:event_codewordCaretUpdate
  129.  
  130.     private void controllaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_controllaActionPerformed
  131.         String risultato = this.control.controlla();
  132.         int errato = binToDec(risultato);
  133.         int leng=risultato.length();
  134.         String check="";
  135.         if(errato>=leng){
  136.             for(int i=0; i<risultato.length(); i++){
  137.                 if(risultato.charAt(i)=='0'){
  138.                     check=check+"1";
  139.                 }else{
  140.                     check=check+"0";
  141.                 }
  142.             }
  143.             risultato=check;
  144.             errato=binToDec(risultato);
  145.         }
  146.         this.resultLabel.setText(risultato);
  147.         risultato = this.codeword.getText();
  148.         if (errato != 0) {
  149.             risultato= segnalaErrore(risultato, errato);
  150.             risultato = "<html>" + risultato + "</html>";
  151.         }
  152.         this.correctLabel.setText(risultato);
  153.     }//GEN-LAST:event_controllaActionPerformed
  154.  
  155.     private static String segnalaErrore(String pString, int pErrato){
  156.         int leng=pString.length();
  157.         String retval="";
  158.         for(int i=leng-1; i>=0; i--){
  159.             if(leng-i==pErrato){
  160.                 char corretto='0';
  161.                 if(pString.charAt(i)=='0'){
  162.                     corretto='1';
  163.                 }
  164.                 retval="<font color=\"red\">"+corretto+"</font>"+retval;
  165.             }else{
  166.                 retval=pString.charAt(i)+retval;
  167.             }
  168.         }
  169.         return retval;
  170.     }
  171.  
  172.     private static int binToDec(String pString) {
  173.         int leng = pString.length();
  174.         int valore = 0;
  175.         for (int i = leng - 1; i >= 0; i--) {
  176.             if (pString.charAt(i) == '1') {
  177.                 int elevazione = (int) Math.pow(2.0, leng - 1 - i);
  178.                 valore = valore + elevazione;
  179.             }
  180.         }
  181.         return valore;
  182.     }
  183.  
  184.     /**
  185.      * @param args the command line arguments
  186.      */
  187.     public static void main(String args[]) {
  188.         java.awt.EventQueue.invokeLater(new Runnable() {
  189.  
  190.             public void run() {
  191.                 new JHamming().setVisible(true);
  192.             }
  193.         });
  194.     }
  195.     // Variables declaration - do not modify//GEN-BEGIN:variables
  196.     private javax.swing.JTextField codeword;
  197.     private javax.swing.JButton controlla;
  198.     private javax.swing.JLabel correct;
  199.     private javax.swing.JLabel correctLabel;
  200.     private javax.swing.JLabel hammingLabel;
  201.     private javax.swing.JLabel result;
  202.     private javax.swing.JLabel resultLabel;
  203.     // End of variables declaration//GEN-END:variables
  204. }
 

Creative Commons License
Il layout di questo sito è concesso sotto licenza Creative Commons.
Per maggiori informazioni sulle licenze dei contenuti del sito, clicca.