Интерфейс с шифром Цезаря Java

83
01 марта 2022, 11:10

Помогите решить задачку. Есть рабочий код шифра Цезаря, есть написанный интерфейс, не могу все это совместить в одно. Дополняю, задание звучит так создайте приложение с графическим интерфейсом для зашифрования и расшифрования слов на английском языке.Шифрование символов и русских слов меня не интересует, код шифра рабочий мне теперь нужно чтобы он работал в интерфейсе, но никак не могу сделать это

`package classes;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.event.CaretEvent;
import javax.swing.event.CaretListener;



public class MainClass {
    private static String getCodingIncodMessage(String message, int key) {
        StringBuilder strBox = new StringBuilder(message.length());
        char tmp;
        for (int i = 0; i < message.length(); i++) {
            tmp = message.charAt(i);
            if (Character.isLetter(message.charAt(i))) {
                tmp += key % 26;
                if (tmp > 'z')
                    tmp = (char)(tmp % 'z' + 'a' - 1);
                else if (tmp < 'a')
                    tmp = (char)(tmp + 26);
            }
            strBox.append(tmp);
        }
        return strBox.toString();
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        //создание окна
        JFrame frame = new JFrame();
        //Завершить приложение при закрытие окна
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    //Задать размер окна
        frame.setSize(500, 500);
        //Задать позицию окна
        frame.setLocation(500, 500);
        //Задать заголовок окна
        frame.setTitle("Шифр цезаря");
        frame.setLayout(new BorderLayout());

final JTextField name = new JTextField();
final JTextField greeting = new JTextField();
name.addCaretListener(new CaretListener() {
    public void caretUpdate(CaretEvent arg0) {
    }
});
frame.add(name, BorderLayout.NORTH);
frame.add(greeting, BorderLayout.CENTER);
frame.setVisible(true);

    }
`

Код интерфейса

   package classes1;
    import java.io.*;
    public class CezarCod {
    int offset=3;
    public String encrypt(String s) throws IOException
    {
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<s.length();i++)
        {
            char t=s.charAt(i);
            if(t>='A' && t<='Z')
            {
                int t1=t-'A'+offset;
                //
                t1=t1%26;
                sb.append((char)(t1+'A'));
            }
            else if(t>='a' && t<='z')
            {
                int t1=t-'a'+offset;
                t1=t1%26;
                sb.append((char)(t1+'a'));
            }
        }
        return sb.toString();
    }


    public String decrypt(String s) throws IOException
    {
        StringBuilder sb=new StringBuilder();
        for(int i=0;i<s.length();i++)
        {
            char t=s.charAt(i);
            if(t>='A' && t<='Z')
            {
                int t1=t-'A'-offset;
                if(t1<0)t1=26+t1;
                sb.append((char)(t1+'A'));
            }
            else if(t>='a' && t<='z')
            {
                int t1=t-'a'-offset;
                if(t1<0)t1=26+t1;
                sb.append((char)(t1+'a'));
            }
        }
        return sb.toString();
    }

public static void main(String[] args) {
try
{
    System.out.println("Шифр Цезаря");
    BufferedReader b;
    String oriTxt,encTxt,decTxt;
    System.out.println("Please enter the word to cipher:");
    b=new BufferedReader(new InputStreamReader(System.in));
    oriTxt=b.readLine();
    CezarCod c=new CezarCod();
    encTxt=c.encrypt(oriTxt);
    System.out.println("Encoded :"+encTxt);
    decTxt=c.decrypt(encTxt);
    System.out.println("Decrypted :"+decTxt);
}
catch(Exception e)
{
    System.out.println(e.toString());
    }
    }
}

Код шифра

Answer 1

Попробуйте так

import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.event.CaretEvent;
public class MainClass {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        //Завершить приложение при закрытие окна
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //Задать размер окна
        frame.setSize(500, 500);
        //Задать позицию окна
        frame.setLocation(500, 500);
        //Задать заголовок окна
        frame.setTitle("Шифр цезаря");
        frame.setLayout(new GridLayout(3,1));
        final JTextArea name = new JTextArea();
        final JTextArea encrypted = new JTextArea();
        final JTextArea decrypted = new JTextArea();
        decrypted.setEditable(false);
        encrypted.setEditable(false);
        CezarCod cezarCod = new CezarCod();
        name.addCaretListener((CaretEvent arg0) -> {
            String text = name.getText();
            encrypted.setText(cezarCod.encrypt(text));
            decrypted.setText(cezarCod.decrypt(encrypted.getText()));
        });
        frame.add(name);
        frame.add(encrypted);
        frame.add(decrypted);        
        frame.setVisible(true);
    }
}
READ ALSO
Java RMI не работает в интернете

Java RMI не работает в интернете

Я только пробую работать с RMIЗапускаю клиент и сервер на разных компьютерах

135
Построение DSM матрицы для Jar-файлов

Построение DSM матрицы для Jar-файлов

Мне нужно построить матрицу DSM-матрицу для Jar файлов (DSMForJars)

189
Поделиться содержимым WebView в pdf

Поделиться содержимым WebView в pdf

У меня есть WebView, содержание которого я формирую из локального txt, даю ему необходимые настройкиВ принципе, по вот этой инструкции я формирую...

91
Заголовок spinner

Заголовок spinner

Такой вопрос: как сделать что бы заголовок spinner отличался от выбранного значения, те

88