Witam
Jestem początkującym programistą. Jak do tej pory pisałem programy, gdzie cały kod programu znajdował się w jednej klasie. Obecnie piszę program szyfrujący i muszę podzielić kod z klasy Interfejs na kilka klas tzn. klasa Interfejs obejmować ma tylko graficzny panel użytkownia, natomiast algorytmy szyfrujące i deszyfrujące muszę umieścić w oddzielnych klasach.
Kod aplikacji przedstawiam poniżej.
- Aplikacja pisana jest w BlueJ;
- Kod kompiluje się poprawnie.
Wszystkie próby modyfikowania kodu kończyły się fiaskiem.
Proszę o napisanie jednej klasy, na podstawie której będe mógł dalej modyfikować kod programu.
Wielkie dzięki za wszelką pomoc !!!
Pozdrawiam Arkasam
public class Interfejs
{
JFrame pole;
JPanel pole1, pole2, pole3, pole4, pole5, pole6, pole7, pole8, pole9;
JCheckBox cb1,cb2;
JLabel ety,ety2, ety3, ety4, ety5, ety6, ety7, ety8;
JTextField liczba;
JButton przycisk1, przycisk2, przycisk3;
JTextArea poleTekstowe1, poleTekstowe2;
JScrollPane przewijanie1, przewijanie2;
String c, note, note1, bufor;
public void startujemy()
{
pole = new JFrame("Program szyfrujący");
pole.setSize (800, 600);
pole.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar pasekMenu = new JMenuBar();
pole.setJMenuBar(pasekMenu);
JMenu menuPlik = new JMenu("Plik");
pasekMenu.add(menuPlik);
JMenuItem plikOtwórz = new JMenuItem("Otwórz");
menuPlik.add(plikOtwórz);
JMenuItem plikZapisz = new JMenuItem("Zapisz");
menuPlik.add(plikZapisz);
JMenuItem plikZamknij = new JMenuItem("Zamknij");
menuPlik.add(plikZamknij);
plikZamknij.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
JOptionPane.showMessageDialog(pole, "Następuje zamknięcie systemu !");
System.exit(0);
}
}
);
/**
* Układ graficzny panelu użytkownika
*/
Container zawartość = pole.getContentPane();
pole.setLayout(new BorderLayout());
JPanel pole1 = new JPanel();
pole.add(pole1, BorderLayout.NORTH);
pole1.setLayout(new GridLayout(1,4));
ety = new JLabel("",JLabel.CENTER);
pole1.add(ety);
cb1 = new JCheckBox("Szyfr Cezara");
pole1.add(cb1);
cb2 = new JCheckBox("Szyfr atBash");
pole1.add(cb2);
pole2 = new JPanel();
pole1.add(pole2);
pole2.setLayout(new GridLayout(3,1));
ety2 = new JLabel("Cezar - przestawienie ", JLabel.CENTER);
pole2.add(ety2);
liczba = new JTextField();
liczba.setOpaque(true);
liczba.setBackground(Color.RED);
pole2.add(liczba);
przycisk1 = new JButton("Wprowadź");
przycisk1.setBackground(Color.YELLOW);
pole2.add(przycisk1);
pole3 = new JPanel();
pole.add(pole3);
pole3.setLayout(new GridLayout(2,1));
poleTekstowe1 = new JTextArea();
pole3.add(poleTekstowe1);
przewijanie1 = new JScrollPane(poleTekstowe1,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
pole3.add(przewijanie1);
poleTekstowe2 = new JTextArea();
pole3.add(poleTekstowe2);
przewijanie2 = new JScrollPane(poleTekstowe2,
JScrollPane.VERTICAL_SCROLLBAR_ALWAYS,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
pole3.add(przewijanie2);
pole4 = new JPanel();
pole.add(pole4, BorderLayout.EAST);
pole4.setLayout(new GridLayout(2,1));
ety4 = new JLabel("Szyfr Cezara");
ety4.setOpaque(true);
ety4.setBackground(Color.RED);
pole4.add(ety4);
ety5 = new JLabel("Szyfr atBash");
ety5 .setOpaque(true);
ety5.setBackground(Color.RED);
pole4.add(ety5);
pole5 = new JPanel();
pole.add(pole5, BorderLayout.WEST);
pole5.setLayout(new GridLayout(2,1));
ety6 = new JLabel("Tekst Jawny");
pole5.add(ety6);
ety7 = new JLabel("Tekst Tajny");
pole5.add(ety7);
pole6 = new JPanel();
pole.add(pole6, BorderLayout.SOUTH);
pole6.setLayout(new GridLayout(1,3));
przycisk2 = new JButton("Szyfruj");
przycisk2.setBackground(Color.PINK);
pole6.add(przycisk2);
przycisk3 = new JButton("Odszyfruj");
przycisk3.setBackground(Color.PINK);
pole6.add(przycisk3);
/**
* Zmiana koloru w 2 etykietkach podczas wyboru szyfrowania;
*/
cb1.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
if(cb1.isSelected()){
ety4.setBackground(Color.GREEN);
liczba.setBackground(Color.WHITE);
}
else
{
ety4.setBackground(Color.RED);
liczba.setBackground(Color.RED);
}
}
}
);
cb2.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
if(cb2.isSelected())
ety5.setBackground(Color.GREEN);
else
ety5.setBackground(Color.RED);
}
}
);
przycisk2.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
if (cb1.isSelected() && cb2.isSelected())
{
/**
* Szyfrowanie dwoma szyframi Cezar i atBash.
*/
}
else if(cb1.isSelected())
{
/**
* Algorytm szyfru Cezara.
* Ten kod muszę zmodyfikować i umieścić w osobnej klasie.
* Docelowo kod będzie tak zmodyfikowany, aby wartość przestawienia
* liter wczytywana była z pola "liczba = new JTextField()";
* po kliknięciu na przycisk "przycisk1 = new JButton("Wprowadź")";
*/
note = poleTekstowe1.getText();
char x[] = note.toCharArray();
for( int i=0 ; i!=x.length ; i++)
{
int n = x[i];
n-=3;
x[i]=(char)n;
}
note = new String(x);
poleTekstowe2.setText(note);
poleTekstowe1.setText("");
}
else if (cb2.isSelected())
{
/**
* Algorytm szyfru atBash.
* Ten kod muszę zmodyfikować i umieścić w osobnej klasie.
*/
note = poleTekstowe1.getText();
char x[ ] = note.toCharArray( );
for( int i=0 ; i!=x.length ; i++)
{
int n = x[i];
n='M'-n;
n+='N';
x[i]=(char)n;
}
note = new String(x);
poleTekstowe2.setText(note);
poleTekstowe1.setText("");
}
else
JOptionPane.showMessageDialog(null,"Nie został wybrany rodzaj szyfrowania !!!");
}
}
);
przycisk3.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e){
if (cb2.isSelected()){
/**
* Algorytm deszyfratora szyfru Cezara.
* Ten kod muszę zmodyfikować i umieścić w osobnej klasie.
*/
note = poleTekstowe1.getText();
char x[ ] = note.toCharArray( );
for( int i=0 ; i!=x.length ; i++)
{
int n = x[i];
n='M'-n;
n+='N';
x[i]=(char)n;
}
note = new String(x);
poleTekstowe2.setText(note);
poleTekstowe1.setText("");
}
}
}
);
pole.setVisible(true);
}
public static void main (String[] args)
{
Interfejs aplikacja;
aplikacja = new Interfejs();
aplikacja.startujemy();
}
}