Klassen Zugriff auf Instanzen

auroNpls

Mitglied
Hallo liebe Leute,

ich bräuchte Hilfe bei einem kleinen Problem und stehe hier leider auf dem Schlauch.
Ich habe eine ButtonListener-Klasse geschrieben, welche die ActionListener Klasse implementiert.
Java:
  class ButtonListener implements ActionListener {
       
        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getActionCommand() == "Chiffrieren") {
                String s = (String) verfahren.getSelectedItem();
                int k = (int) offsets.getSelectedItem();
                switch(s) {
                    case "Verschiebe Chiffre":
                        VerschiebeChiffre ver = new VerschiebeChiffre(k);
                        Chiffre chiffre = ver;
                        chiffretext.setText(chiffre.verschluesseln(klartext.getText()));
                        break;
                    case "One Time Pad":
                        OneTimePad one = new OneTimePad();
                        chiffre = one;
                        chiffretext.setText(chiffre.verschluesseln(klartext.getText()));
                        break;
                }
            }
            if(e.getActionCommand() == "Dechiffrieren") {
                if(chiffre != null) {
                    klartext.setText(chiffre.entschluesseln(chiffretext.getText()));
                }
            }
        }
       
    }

Ich möchte, dass "chiffre" (welches oben gespeichert wird) übergeben wird an die zweite if-Bedingung, jedoch komme ich nicht auf den Trichter, wie ich das richtig übergeben kann. Ich habe zudem noch eine Chiffre-Klasse, eine VerschiebeChiffre-Klasse und eine OneTimePad-Klasse. Das Chiffrieren funktioniert soweit einwandfrei. Jedoch brauche ich ja zum Entschlüsseln, die entsprechende Chiffre, sodass beim Entschlüsseln mir nicht ein falscher Klartext ausgegeben wird.

Vielen Dank euch schon mal! 🙂
 
Speichere die Ciffre Instanz einfach als Feld in der Klasse.
Ich hab da mal "was vorbereitet" plus ein paar "Fehler" im Code behoben:
Java:
class ButtonListener implements ActionListener {
  private Chiffre chiffre;
  @Override
  public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("Chiffrieren")) {
      String s = (String) verfahren.getSelectedItem();
      int k = (int) offsets.getSelectedItem();
      switch (s) {
        case "Verschiebe Chiffre":
          chiffre = new VerschiebeChiffre(k);
          break;
        case "One Time Pad":
          chiffre = new OneTimePad();
          break;
        default:
          throw new UnsupportedOperationException("Unbekannte Chiffre: " + s);
      }
      chiffretext.setText(chiffre.verschluesseln(klartext.getText()));
    } else if (e.getActionCommand().equals("Dechiffrieren")) {
      if (chiffre != null) {
        klartext.setText(chiffre.entschluesseln(chiffretext.getText()));
      }
    }
  }
}
 
Speichere die Ciffre Instanz einfach als Feld in der Klasse.
Ich hab da mal "was vorbereitet" plus ein paar "Fehler" im Code behoben:
Java:
class ButtonListener implements ActionListener {
  private Chiffre chiffre;
  @Override
  public void actionPerformed(ActionEvent e) {
    if (e.getActionCommand().equals("Chiffrieren")) {
      String s = (String) verfahren.getSelectedItem();
      int k = (int) offsets.getSelectedItem();
      switch (s) {
        case "Verschiebe Chiffre":
          chiffre = new VerschiebeChiffre(k);
          break;
        case "One Time Pad":
          chiffre = new OneTimePad();
          break;
        default:
          throw new UnsupportedOperationException("Unbekannte Chiffre: " + s);
      }
      chiffretext.setText(chiffre.verschluesseln(klartext.getText()));
    } else if (e.getActionCommand().equals("Dechiffrieren")) {
      if (chiffre != null) {
        klartext.setText(chiffre.entschluesseln(chiffretext.getText()));
      }
    }
  }
}

Danke für die schnelle Hilfe! Stand einfach nur auf dem Schlauch! 🙂
 

Zurück
Oben