📄 i_p_lab4view.java
字号:
/* * i_p_lab4View.java */package lab4;import org.jdesktop.application.Action;import org.jdesktop.application.ResourceMap;import org.jdesktop.application.SingleFrameApplication;import org.jdesktop.application.FrameView;import org.jdesktop.application.TaskMonitor;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.lang.Math;import java.util.ArrayList;import java.util.Random;import java.util.Scanner;import java.util.logging.Level;import java.util.logging.Logger;import javax.swing.Timer;import javax.swing.Icon;import javax.swing.JDialog;import javax.swing.JFileChooser;import javax.swing.JFrame;/** * The application's main frame. */public class i_p_lab4View extends FrameView { public i_p_lab4View(SingleFrameApplication app) { super(app); initComponents(); // status bar initialization - message timeout, idle icon and busy animation, etc ResourceMap resourceMap = getResourceMap(); int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout"); messageTimer = new Timer(messageTimeout, new ActionListener() { public void actionPerformed(ActionEvent e) { statusMessageLabel.setText(""); } }); messageTimer.setRepeats(false); int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate"); for (int i = 0; i < busyIcons.length; i++) { busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]"); } busyIconTimer = new Timer(busyAnimationRate, new ActionListener() { public void actionPerformed(ActionEvent e) { busyIconIndex = (busyIconIndex + 1) % busyIcons.length; statusAnimationLabel.setIcon(busyIcons[busyIconIndex]); } }); idleIcon = resourceMap.getIcon("StatusBar.idleIcon"); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); // connecting action tasks to status bar via TaskMonitor TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext()); taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() { public void propertyChange(java.beans.PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); if ("started".equals(propertyName)) { if (!busyIconTimer.isRunning()) { statusAnimationLabel.setIcon(busyIcons[0]); busyIconIndex = 0; busyIconTimer.start(); } progressBar.setVisible(true); progressBar.setIndeterminate(true); } else if ("done".equals(propertyName)) { busyIconTimer.stop(); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); progressBar.setValue(0); } else if ("message".equals(propertyName)) { String text = (String)(evt.getNewValue()); statusMessageLabel.setText((text == null) ? "" : text); messageTimer.restart(); } else if ("progress".equals(propertyName)) { int value = (Integer)(evt.getNewValue()); progressBar.setVisible(true); progressBar.setIndeterminate(false); progressBar.setValue(value); } } }); } public static void WriteFile(String FileName,String Content) throws IOException { PrintWriter out = new PrintWriter(new FileWriter(FileName)); out.print(Content); out.close(); } /** 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() { mainPanel = new javax.swing.JPanel(); jButton1 = new javax.swing.JButton(); jButton2 = new javax.swing.JButton(); menuBar = new javax.swing.JMenuBar(); javax.swing.JMenu fileMenu = new javax.swing.JMenu(); javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem(); statusPanel = new javax.swing.JPanel(); javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator(); statusMessageLabel = new javax.swing.JLabel(); statusAnimationLabel = new javax.swing.JLabel(); progressBar = new javax.swing.JProgressBar(); mainPanel.setName("mainPanel"); // NOI18N org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(lab4.i_p_lab4.class).getContext().getResourceMap(i_p_lab4View.class); jButton1.setText(resourceMap.getString("jButton1.text")); // NOI18N jButton1.setName("jButton1"); // NOI18N jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); jButton2.setText(resourceMap.getString("jButton2.text")); // NOI18N jButton2.setName("jButton2"); // NOI18N jButton2.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton2ActionPerformed(evt); } }); javax.swing.GroupLayout mainPanelLayout = new javax.swing.GroupLayout(mainPanel); mainPanel.setLayout(mainPanelLayout); mainPanelLayout.setHorizontalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, mainPanelLayout.createSequentialGroup() .addGap(105, 105, 105) .addGroup(mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jButton2, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 188, Short.MAX_VALUE) .addComponent(jButton1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 188, Short.MAX_VALUE)) .addGap(107, 107, 107)) ); mainPanelLayout.setVerticalGroup( mainPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(mainPanelLayout.createSequentialGroup() .addGap(22, 22, 22) .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 56, javax.swing.GroupLayout.PREFERRED_SIZE) .addGap(65, 65, 65) .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 57, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(49, Short.MAX_VALUE)) ); menuBar.setName("menuBar"); // NOI18N fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N fileMenu.setName("fileMenu"); // NOI18N javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(lab4.i_p_lab4.class).getContext().getActionMap(i_p_lab4View.class, this); exitMenuItem.setAction(actionMap.get("quit")); // NOI18N exitMenuItem.setName("exitMenuItem"); // NOI18N fileMenu.add(exitMenuItem); menuBar.add(fileMenu); statusPanel.setName("statusPanel"); // NOI18N statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N statusMessageLabel.setName("statusMessageLabel"); // NOI18N statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N progressBar.setName("progressBar"); // NOI18N javax.swing.GroupLayout statusPanelLayout = new javax.swing.GroupLayout(statusPanel); statusPanel.setLayout(statusPanelLayout); statusPanelLayout.setHorizontalGroup( statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(statusPanelSeparator, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE) .addGroup(statusPanelLayout.createSequentialGroup() .addContainerGap() .addComponent(statusMessageLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 230, Short.MAX_VALUE) .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(statusAnimationLabel) .addContainerGap()) ); statusPanelLayout.setVerticalGroup( statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(statusPanelLayout.createSequentialGroup() .addComponent(statusPanelSeparator, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(statusPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(statusMessageLabel) .addComponent(statusAnimationLabel) .addComponent(progressBar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(3, 3, 3)) ); setComponent(mainPanel); setMenuBar(menuBar); setStatusBar(statusPanel); }// </editor-fold>//GEN-END:initComponents //генерация матрицыprivate int[][] getRandMatr64 (int strok,int stolb){ Random random = new Random(); int matr[][]; matr=new int [strok][stolb]; for (int i=0; i<strok; i++) for (int j=0; j<stolb; j++) matr[i][j]=Math.abs(random.nextInt()) % 2; for (int i=0; i<strok; i++) { for (int j=0; j<stolb; j++) {System.out.print(matr[i][j]); System.out.print(" ");} System.out.println();} return matr;}private int ConvertToDec (String s){int chislo=0; int step=s.length()-1;for (int i=0; i<s.length(); i++){ chislo=chislo +(int) (Integer.parseInt(s.substring(i, i + 1)) * Math.pow(2, step));step--;} return chislo;}private String Sdvig (String s){String sim=s.substring(0, 1); String rez="";for (int i=1; i<s.length(); i++){ rez=rez+s.substring(i, i+1);}rez=rez+sim; return rez;}private String obr_Sdvig (String s){String sim=s.substring(s.length()-1, s.length()); String rez=""; rez=sim;for (int i=0; i<s.length()-1; i++){ rez=rez+s.substring(i, i+1);} return rez;}private int[][] get_S(){ Random random = new Random(); int zn[]; zn=new int[16]; int matr[][]; matr=new int [4][16]; for (int i=0; i<4; i++) { for (int j=0; j<16; j++) while(1<10) {int chislo=Math.abs(random.nextInt()) % 16; //System.out.println("chislo="+chislo); int bool=0; for (int k2=0; k2<j; k2++) {//System.out.println(zn[k]); if (chislo==zn[k2]) bool=1; } //System.out.println("bool="+bool); if (bool==0) {zn[j]=chislo; matr[i][j]=chislo; break;} } zn=new int[16]; } for (int i=0; i<4; i++) { for (int j=0; j<16; j++) {System.out.print(matr[i][j]); System.out.print(" ");} System.out.println();} return matr;}int key_matr[][]; int matr_nach[][]; int ras[][];int matr_kon[][]; ArrayList l_m_s; int p[][]; int b[][]; int k[][]; int si[]; String rezultat1; String C="", D=""; String C16="", D16=""; private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed// TODO add your handling code here: //считывание данных из файла //выбор файла String s="",strk="",strk_unikod="",strk_bin=""; JFileChooser chooser = new JFileChooser(); int returnVal = chooser.showOpenDialog(chooser); if(returnVal == JFileChooser.APPROVE_OPTION) { //jTextField2.setText(chooser.getSelectedFile().getName()); s=chooser.getSelectedFile().getAbsolutePath();} //чтение файл try { Scanner in = new Scanner(new File(s)); while (in.hasNext()) {strk=strk+in.nextLine(); }} catch ( Exception ex ) {ex.printStackTrace();} System.out.println ("strk="+strk); //создание последовательности бит for (int i=0; i<strk.length(); i++) { int kod_sim=strk.substring(i,i+1).codePointAt(0); String bin_sim=Integer.toBinaryString(kod_sim); int kol_vo_bit=bin_sim.length(); if (kol_vo_bit<12) for (int k1=0; k1<(12-kol_vo_bit); k1++) bin_sim="0"+bin_sim; // System.out.println ("байты символа="+kod_sim); System.out.println ("биты символа "+i+" :"+bin_sim); strk_bin=strk_bin+bin_sim; //System.out.println ("kod_sim="+kod_sim); } int malo=strk_bin.length()/64+1; malo=64*malo-strk_bin.length(); for (int i=0; i<malo; i++) strk_bin=strk_bin+"0"; //strk_bin="01000010001001000011010101000011101001000100000101000100001000000100001000100100001101010100001110100100010000010100010000100000"; // strk_bin="11111111111111111111111111111111111111111111111111111111111111110000000000000000000000000000000000000000000000000000000000000000"; System.out.println ("последовательность бит="+strk_bin); System.out.println ("размер последовательность бит="+strk_bin.length()); //System.out.println ("strk_bin="+strk_bin);//GEN-LAST:event_jButton1ActionPerformed //ключ шифрованияString matr[][]; matr=new String [8][8];key_matr=new int [8][8];System.out.println ("Ключ шифрования"); key_matr=getRandMatr64(8,8); String key="";for (int i=0; i<8; i++) for (int j=0; j<8; j++) key=key+key_matr[i][j]; //создание матрицы начальной перестановки matr_nach=new int [8][8]; int elem=58;for (int i=0;i<4;i++){ matr_nach[i][0]=elem; elem=elem+2;} elem=57;for (int i=4;i<8;i++){ matr_nach[i][0]=elem; elem=elem+2;} for (int i=0; i<8; i++) for (int j=1; j<8; j++) matr_nach[i][j]=matr_nach[i][j-1]-8; System.out.println ("матрица начальной перестановки");for (int i=0; i<8; i++) { for (int j=0; j<8; j++) {System.out.print(matr_nach[i][j]); System.out.print(" ");} System.out.println();} //функция расширения int count=1; ras=new int [8][6]; ras[0][0]=32; for (int j=1; j<6; j++) { ras[0][j]=count; count++;} count=count-2; for (int i=1; i<8; i++) {for (int j=0; j<6; j++) { ras[i][j]=count; count++; } count=count-2;} ras[7][5]=1; System.out.println ("функция расширения");for (int i=0; i<8; i++) { for (int j=0; j<6; j++) {System.out.print(ras[i][j]); System.out.print(" ");} System.out.println();}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -