Swing Variable in Actionlistener aufrufen

S

SchokoBons

Mitglied
Moin Leute,
ich scheitere gerade an einen eigentlich leichten Problem in meinen Programm: Ich erstelle eine Array in einer Actionlistener Methode. Jetzt will ich in einen zweiten Actionlistener die Array aufrufen, verändern und an eine weitere Methode weitergeben. Was wäre die beste Methode um dieses Problem beim Actionlistener zu lösen?
 

Anhänge

  • Vigenère.txt
    3 KB · Aufrufe: 0
J

JustNobody

Top Contributor
Das sieht mir fast nach einem Bug der Forensoftware aus ... evtl. kann der TE versuchen, noch einmal hier zu antworten - mit seiner Frage ...
 
S

SchokoBons

Mitglied
Mh ja irgendwie bugt das ganz schön rum... Ich poste hier jetzt nochmal die komplette Frage:

Moin, ich bin Anfänger und verzweifle gerade bei dem Actionlistener eines Buttons. Das Programm erstellt einen Knopf, der beim betätigen eine char Array erstellt und anschließend zwei neue Knöpfe erschafft. Das Problem liegt darin, dass die beiden neuen Knöpfe bei Aktivierung mit der Array vom ersten Knopf arbeiten sollen, jedoch weiß ich nicht wie ich es schaffe diese char Array in diesern Fremden Actionlistenern Methoden aufzurufen.

Ich weiß nicht welche Code Teile noch relevant sind, deswegen schreibe ich mal das ganze Programm rein. Die Array, mit dem ich das Problem habe heißt "key". In den Actionlistenern von "button2" und "button3" kann ich nicht auf sie zugreifen und ich weiß nicht wie man bei so einer Art Methode das lösen kann.

Java:
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class Vigenère {

    public static void main(String[] args) {

        JFrame fenster = new JFrame();
        fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        fenster.setVisible(true);
        fenster.setSize(700, 500);
        fenster.setTitle("Vigenère");

        setupContent(fenster);

    }

    private static void setupContent(JFrame fenster) {
        // TODO Auto-generated method stub

        JPanel content = new JPanel();

        JButton button = new JButton("Ok");
        JButton button2 = new JButton("verschlüsseln");
        JButton button3 = new JButton("entschlüsseln");

        JLabel label = new JLabel("Gebe den Schlüssel ein");

        JTextField textField = new JTextField(30);

        content.add(label);
        content.add(textField);
        content.add(button);

        fenster.setContentPane(content);

        button.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent e) {

                String schlüssel = textField.getText();
                char[] key = schlüssel.toCharArray(); // Array Key soll von anderen Methoden aufgerufen werden,

                textField.setText("");

                label.setText("Gebe den Text ein  ");
                button.setVisible(false);

                content.setLayout(null);

                content.add(button2);
                content.add(button3);
                button2.setBounds(75, 80, 250, 250);
                button3.setBounds((625 - 250), 80, 250, 250);
            }

        });

        button2.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                int richtung = 1;

                String Text1 = textField.getText();
                char[] Text = Text1.toCharArray();
                char[] encrypted = crypt(Text, key, richtung); // Key wird nicht erkannt

            }

        });
        button3.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                int richtung = 0;

                String Text2 = textField.getText();
                char[] Text = Text2.toCharArray();
                char[] decrypted = crypt(Text, key, richtung);
            }

        });

    }

    public static char[] crypt(char[] Text, char[] key, int richtung) {
        char[] output = new char[Text.length];

        for (int i = 0; i < Text.length; i++) {

            if (richtung == 1) {
                int result = (Text[i] + key[i % key.length]) % 128;
                output[i] = (char) result;
            } else if (richtung == 0) {
                int result;
                if (Text[i] - key[i % key.length] < 0)
                    result = (Text[i] - key[i % key.length]) + 128;
                else
                    result = (Text[i] - key[i % key.length]) % 128;
                output[i] = (char) result;

            }
        }

        return output;

    }

}
 
mihe7

mihe7

Top Contributor
@SchokoBons Du kannst für key in dem Fall keine lokale Variable verwenden. So etwas löst man mit Instanzvariablen, das setzt allerdings voraus, dass man auch eine Instanz hat; main sollte bei Anfängern grundsätzlich die einzig statische Methode im Programm sein.

Dann ein paar allgemeine Anmerkungen:
a) verwende im Quelltext möglichst nur ASCII. Umlaute, Akzente etc. führen nur zu Problemen - wie man an den Beiträgen oben gut sieht
b) verwende sinnvolle Bezeichner: button, button2 und button3 ist absolut nichtssagend.
c) verwende keine Parameter, die den grundsätzlichen Kontrollfluss einer Methode bestimmen. Mach aus crypt lieber zwei Methoden: encrypt und decrypt.

Zum letzten Punkt noch eine Anmerkung: tatsächlich wäre es in Deinem Fall auch möglich, einfach vorab einen Faktor (+1/-1) zu bestimmen, z. B. int faktor = richtung > 0 ? 1 : -1; und dann in der Schleife unabhängig von richtung zu berechnen:
Java:
output[i] = (char) ((Text[i] + faktor*key[i % key.length] + 128)  % 128);
 
T

temi

Top Contributor
Und damit auch klar ist warum das mit "key" nicht funktioniert:

Variablen haben einen Gültigkeitsbereich.
Java:
void someMethod() { // Beginn Gültigkeitsbereich 1
   
    int var1 = 42; // Variable ist im Gültigkeitsbereich 1
   
    if (...) { // Beginn Gültigkeitsbereich 2
        int var2 = var1; // var1 ist innerhalb ihres Gültigkeitsbereichs, var2 ist im Bereich 2
    } // Ende Gültigkeitsbereich 2, hier endet die Gültigkeit von var2
   
    int var3 = var2; // FEHLER!!! var2 ist hier nicht bekannt
   
} // Ende Gültigkeitsbereich 1, hier endet die Gültigkeit von var1 und von var3

void someOtherMethod() {
    int var4 = var1; // FEHLER!!! var1 ist hier nicht bekannt
}

Die Variablen 1 - 4 sind sogenannte lokale Variablen, weil sie nur lokal innerhalb einer Methode oder sogar in einem noch engeren Bereich (if()...) gültig sind.
 
tbone78

tbone78

Administrator
Mitarbeiter
@SchokoBons - das Foren-Bug-Problem sollte nun behoben sein - jetzt kann man auch die beste Antwort rechts an der Seite einer jeden Antwort auswählen, sofern es aus deiner Sicht eine gibt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 1
Z ActionListener Variable übergeben AWT, Swing, JavaFX & SWT 12
J ActionListener erkennt Variable nicht AWT, Swing, JavaFX & SWT 6
S Java GUI durch variable Größe einer Map anpassen AWT, Swing, JavaFX & SWT 3
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
G Swing Variable Elemente für GroupLayout AWT, Swing, JavaFX & SWT 18
MR._FIRE_Flower Variable setzten mit JButton AWT, Swing, JavaFX & SWT 5
P Variable einer Eingabe in anderes Textfeld schreiben AWT, Swing, JavaFX & SWT 7
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
U Eingabe von TextField in variable speichern AWT, Swing, JavaFX & SWT 2
B SWT Globale Variable AWT, Swing, JavaFX & SWT 10
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
D JavaFX Gesetzte Variable in einem Controller im Controller laden AWT, Swing, JavaFX & SWT 1
Z Wird die Variable nicht übergeben ? AWT, Swing, JavaFX & SWT 16
L Swing Variable Anzahl an JButtons AWT, Swing, JavaFX & SWT 7
L ActionPerformed Variable übergeben AWT, Swing, JavaFX & SWT 3
J Bilder als Variable an einem Objekt speichern AWT, Swing, JavaFX & SWT 3
J JavaFX Variable an neue Scene übergeben AWT, Swing, JavaFX & SWT 8
V Warum wird meine Variable nicht erkannt? AWT, Swing, JavaFX & SWT 2
M Swing Alter Wert von einer Variable wird verwendet AWT, Swing, JavaFX & SWT 8
F Swing TextField Eingabe in Variable umwandeln um zum Beispiel zu rechnen. AWT, Swing, JavaFX & SWT 3
Kandum obj_JMenu.addMenuListener - variable Anzahl an JMenus / menulistenern & frame.setTitle() dynamisch AWT, Swing, JavaFX & SWT 7
J Swing String soll als Variable dienen AWT, Swing, JavaFX & SWT 11
B Variable ist leer / Scope von Variablen AWT, Swing, JavaFX & SWT 2
J Button En-/Disablen - Warum variable final? AWT, Swing, JavaFX & SWT 2
M private Variable übergeben AWT, Swing, JavaFX & SWT 12
U AWT local variable * is accessed from within inner class; needs to be declared final AWT, Swing, JavaFX & SWT 6
R Swing Variable Panelbreite ohne Layoutmanager AWT, Swing, JavaFX & SWT 6
T Image skaliert in Variable speichern AWT, Swing, JavaFX & SWT 6
H Swing variable in Numberfield ausgeben AWT, Swing, JavaFX & SWT 5
H variable Höhe einer JTextArea (als Renderer/Editor) als Zelle einer JTable AWT, Swing, JavaFX & SWT 9
C Swing JTextPane zeigt HTML-Text aus Variable nicht an :( AWT, Swing, JavaFX & SWT 3
B Anprechen von TextAreas mit Variable AWT, Swing, JavaFX & SWT 2
N Listener für Variable AWT, Swing, JavaFX & SWT 4
B Button benennen via Variable? AWT, Swing, JavaFX & SWT 6
B Variable wird nicht gefunden AWT, Swing, JavaFX & SWT 5
C Button/Textfeld mit Variable verknüpfen AWT, Swing, JavaFX & SWT 4
B Swing Variable in JTextfield geht nicht AWT, Swing, JavaFX & SWT 10
B problem mit variable (final) AWT, Swing, JavaFX & SWT 7
P Zeichen abhängig davon, ob sich eine Variable geändert hat AWT, Swing, JavaFX & SWT 2
T statische Variable zum Referenzieren einer Instanz von Frame AWT, Swing, JavaFX & SWT 3
J Integer aus Textdatei auslesen und in Variable speichern AWT, Swing, JavaFX & SWT 11
T Variable Menge an Bildern außerhalb paint() zeichnen? AWT, Swing, JavaFX & SWT 2
J -variable Formular Klasse AWT, Swing, JavaFX & SWT 2
E Variable übergeben AWT, Swing, JavaFX & SWT 4
B Cannot refer to a non-final variable (JButton) AWT, Swing, JavaFX & SWT 3
kb frame als globale variable AWT, Swing, JavaFX & SWT 2
G JTable - Zeilenhöhe variable? AWT, Swing, JavaFX & SWT 2
D Auf Variable zugreifen AWT, Swing, JavaFX & SWT 3
G variable übergeben in andere klasse AWT, Swing, JavaFX & SWT 4
S Bild in einer Variable speichern AWT, Swing, JavaFX & SWT 7
S Eingabe des Textfeldes in Variable speichern AWT, Swing, JavaFX & SWT 7
R JFrame -- Variable Positionierung durch Window Manager? AWT, Swing, JavaFX & SWT 2
M variable Jtable AWT, Swing, JavaFX & SWT 4
P GetSelectetItem() erkennt Variable aus Liste nicht. AWT, Swing, JavaFX & SWT 2
K Polygon in image variable? AWT, Swing, JavaFX & SWT 2
T Variable Zeilenhöhe in jTable AWT, Swing, JavaFX & SWT 5
P JTable variable Zeilengröße AWT, Swing, JavaFX & SWT 3
O Display Env. Variable unter (X11) von ClientApp. abfragen AWT, Swing, JavaFX & SWT 2
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
Blender3D einzelner ActionListener vs anonyme ActionListener AWT, Swing, JavaFX & SWT 10
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
Liondary GUI - ActionListener AWT, Swing, JavaFX & SWT 7
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
Sin137 ActionListener in MVC AWT, Swing, JavaFX & SWT 7
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
Y ActionListener AWT, Swing, JavaFX & SWT 2
K Ereignisbehandlung, ActionListener, ActionEvent AWT, Swing, JavaFX & SWT 3
A Gui für Vokabeltrainer (ActionListener) AWT, Swing, JavaFX & SWT 14
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
K GUI, Button, ActionListener - ein paar Einsteigerprobleme AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen

Anzeige

Neue Themen


Oben