String wird in GUI falsch ausgegeben

J

Jiscona

Mitglied
Ich habe ein Problem: Ich will in meinem Programm beim Drücken eines Buttons einen Text in einer TextArea ausgeben:
Code:
public void b_update_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
    for (int i = 0; i < number; ++i) {                            
      if (variableArt[i] == 1) {
        name[1][i] = ("Hello World");
        laenge = laenge + 23;
        tA_quelltext.append("int "+name[i]+";\n");
}//end of b_update_ActionPerformed
Wenn ich diesen Button dann allerdings drücke, wird nicht "Hello World", sondern [Ljava.lang.String;@32703de6; a
 
A

affot

Mitglied
Was macht denn die Methode b_update_ActionPerformed?
Ich kenne nur ActionPerformed vom ActionListener, aber nichts mit b_update_?
Hast du die selbst so definiert? Einfach um sie in der actionPerformed Methode des ActionListeners nochmal manuell aufzurufen, oder ist das eine Methode die von irgendwas automatisch aufgerufen wird?
 
J

Jiscona

Mitglied
Was macht denn die Methode b_update_ActionPerformed?
Ich kenne nur ActionPerformed vom ActionListener, aber nichts mit b_update_?
Hast du die selbst so definiert? Einfach um sie in der actionPerformed Methode des ActionListeners nochmal manuell aufzurufen, oder ist das eine Methode die von irgendwas automatisch aufgerufen wird?
b_update ist einfach nur der Name von den Button, auf den ActionPerformed angewendet wird.
 
A

affot

Mitglied
b_update ist einfach nur der Name von den Button, auf den ActionPerformed angewendet wird.

Ich stehe gerade anscheinend irgendwie auf dem Schlauch...
Ich würde so vorgehen:

Code:
b_update.addActionListener(new ActionListener(){
@Override
public void ActionPerformed(Actionevent e){...}
};

Sobald ich doch die Methode umbenenne zu b_update_ActionPerformed reagiert er doch nicht mehr auf den Klick?
 
kneitzel

kneitzel

Top Contributor
Du kannst den ActionListener doch auf viele Arten einbauen:

Ein möglicher Schritt wäre z.B. ein Lambda Ausdruck oder du kannst da auch eine Methoden-Referenz übergeben.

Also in Code wäre das dann in etwas jeweils das Folgende:

Java:
// Dein Code Beispiel
b_update.addActionListener(new ActionListener(){
    @Override
    public void ActionPerformed(Actionevent e){...}
});

// Lambda
b_update.addActionListener(e-> {...});

// Methodenreferenz
b_update.addActionListener(this::someMethod);

Oder einfach einmal in einem ganz kleinen übersetzbaren Beispiel (sehr unschön - um es ganz kurz zu halten viel static!)
Java:
import javax.swing.*;
import java.awt.event.ActionEvent;

public class GuiTest {
    private static JButton button;

    public static void main(final String[] args) {
        JFrame frame = new JFrame("Test");
        frame.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
        frame.setSize(400,200);
        button = new JButton("Press me");
        frame.add(button);
        frame.setVisible(true);

        // Dies wäre der Lambda Ausdruck....
        // button.addActionListener(e -> button.setText("Test"));

        button.addActionListener(GuiTest::buttonPressActionListener);
    }

    public static void buttonPressActionListener(final ActionEvent e) {
        button.setText("Test");
    }
}

Unter dem Strich geht es da bei allen Varianten um das Gleiche: Das Interface, das ActionListener fordert, wird implementiert. Da es nur eine Methode ist, spricht man auch von einem "functional interface" und da können dann Lambda Ausdrücke oder Methoden Referenzen zum Einsatz kommen.
 
J

Jiscona

Mitglied
Ich stehe gerade anscheinend irgendwie auf dem Schlauch...
Ich würde so vorgehen:

Code:
b_update.addActionListener(new ActionListener(){
@Override
public void ActionPerformed(Actionevent e){...}
};

Sobald ich doch die Methode umbenenne zu b_update_ActionPerformed reagiert er doch nicht mehr auf den Klick?
Code:
b_update.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        b_update_ActionPerformed(evt);
      }
    });
Wird schon bei den Komponenten implementiert.
Code:
public void b_update_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
   //alles hier
   
  } // end of b_update_ActionPerformed
Wird dann aktiviert, wenn der Button gedrückt wird.
 
kneitzel

kneitzel

Top Contributor
Code:
b_update.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        b_update_ActionPerformed(evt);
      }
    });
Wird schon bei den Komponenten implementiert.
Code:
public void b_update_ActionPerformed(ActionEvent evt) {
    // TODO hier Quelltext einfügen
   //alles hier
  
  } // end of b_update_ActionPerformed
Wird dann aktiviert, wenn der Button gedrückt wird.

Nur als kleiner Hinweis:
Den ganzen Block bei b_update.addActionListener kannst Du dir sparen und so wie in meinem Beispiel direkt schreiben:
b_update.addActionListener(this::b_update_ActionPerformed);
Das ist deutlich kürzer und geht ab Java 8.

Oder wenn diese Methoden-Referenz nicht zusagt, dann würde ich es wenigstens als Lambda kürzen:
b_update.addActionListener(evt -> b_update_ActionPerformed(evt));

Das verkürzt doch den Code ungemein und man hat ja in der Regel mehr wie eine Komponente dessen Events man verarbeiten möchte, so dass da bei Deine Schreibweise schnell sehr viele Zeilen Code zusammen kommen und da dann alles schnell unleserlich wird.

Oder hast Du einen GUI Builder im Einsatz, der dir so Code erzeugt hat?
 
J

Jiscona

Mitglied
Nur als kleiner Hinweis:
Den ganzen Block bei b_update.addActionListener kannst Du dir sparen und so wie in meinem Beispiel direkt schreiben:
b_update.addActionListener(this::b_update_ActionPerformed);
Das ist deutlich kürzer und geht ab Java 8.

Oder wenn diese Methoden-Referenz nicht zusagt, dann würde ich es wenigstens als Lambda kürzen:
b_update.addActionListener(evt -> b_update_ActionPerformed(evt));

Das verkürzt doch den Code ungemein und man hat ja in der Regel mehr wie eine Komponente dessen Events man verarbeiten möchte, so dass da bei Deine Schreibweise schnell sehr viele Zeilen Code zusammen kommen und da dann alles schnell unleserlich wird.

Oder hast Du einen GUI Builder im Einsatz, der dir so Code erzeugt hat?
Alles Klar, Danke.
Ich schau mal, ob es funktioniert.
 
A

affot

Mitglied
Ich danke euch für die ausführlichen Erklärungen!
Dass der Actionlistener als functional interface auch so implementiert werden kann war mir gar nicht bewusst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F String wird richtig in konsole geschrieben aber falsch an Methode übergeben Java Basics - Anfänger-Themen 8
V Eingabe String wird falsch erkannt Java Basics - Anfänger-Themen 7
H Wie wird ein String intern gespeichert? Java Basics - Anfänger-Themen 10
G String wird nach Einlesen aus Datei nicht erkannt Java Basics - Anfänger-Themen 3
T Dateiinhalt wird nicht in String eingelesen Java Basics - Anfänger-Themen 4
der_Schokomuffin Hilfe gesucht: String wird auf null gesetzt! Java Basics - Anfänger-Themen 17
J Programm was üer Runtime.getRuntime gestartet wird erkennt String Parameter nicht Java Basics - Anfänger-Themen 0
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
Voreck Variablen Wird nicht in String Gespeichert Java Basics - Anfänger-Themen 23
E Methoden String wird in Rekursion nicht überschrieben Java Basics - Anfänger-Themen 2
Z Variablen String umdrehen, Variable wird nicht gefunden Java Basics - Anfänger-Themen 6
F String wird in Konsole nicht eingelesen Java Basics - Anfänger-Themen 19
L String wird nicht gespeichert / Probleme mit Dateinamen Java Basics - Anfänger-Themen 9
M Möglich? Methode aufrufen deren Bezeichner zur Laufzeit durch einen überg. String festgelegt wird Java Basics - Anfänger-Themen 3
M Datentypen Ergebniss- Double to String- wird nicht angezeigt Java Basics - Anfänger-Themen 13
N Variablen String wird nicht übergeben Java Basics - Anfänger-Themen 139
P Datentypen String auf JTextField wird zu Char-Array und anschließend zu int Java Basics - Anfänger-Themen 12
B Warum wird String im Code nicht als Schlüsselwort markiert? Java Basics - Anfänger-Themen 11
F Variablen String wird in int umgewandelt aber trotzdem String? Java Basics - Anfänger-Themen 5
F Variablen String-Array wird ungewollt "überschreiben" Java Basics - Anfänger-Themen 7
Chocola Datums-String mit "ungültigem Anhängsel" wird ohne Fehler geparsed. Kann man dies irgendwie beheben? Java Basics - Anfänger-Themen 3
M String wird nicht korrekt ausgelesen. Java Basics - Anfänger-Themen 11
F String wird nicht aktualisiert Java Basics - Anfänger-Themen 2
M String Inhalt wird überschrieben (Subklassen verwenden denselben String) Java Basics - Anfänger-Themen 13
X String wird nicht richtig ersetzt! Java Basics - Anfänger-Themen 2
A String wird nur einmal an den StringBuffer angehängt Java Basics - Anfänger-Themen 10
F String equals null wird nicht angenommen. Java Basics - Anfänger-Themen 24
K Prob mit java.util.regex.matches-String wird nicht erkannt? Java Basics - Anfänger-Themen 9
W String wird nicht dargestellt Java Basics - Anfänger-Themen 7
AlexVo String zu Java Anweisung getString("*** java code ***") Java Basics - Anfänger-Themen 19
O String mit Character vergleichen Java Basics - Anfänger-Themen 3
I String.split regex Frage Java Basics - Anfänger-Themen 2
H Methode über String Wert aufrufen Java Basics - Anfänger-Themen 8
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
tobikoch String x= null Bedeutung Java Basics - Anfänger-Themen 9
GAZ String replace() Elemente tauschen Java Basics - Anfänger-Themen 13
R String in char-Array übertragen Java Basics - Anfänger-Themen 5
T Zeichen im String verschiebe Java Basics - Anfänger-Themen 9
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
P Datentypen Array und String Java Basics - Anfänger-Themen 2
javapingu Hex String zu long Java Basics - Anfänger-Themen 2
D Attribut Telefonnummer - eigene Klasse oder String Java Basics - Anfänger-Themen 13
Vamecruft Compiler-Fehler public static void zu static String ändern Java Basics - Anfänger-Themen 2
O if Abfrage erkennt String nicht Java Basics - Anfänger-Themen 1
A eine neue normale String-Array von einer String-Array, die in for schleife ist, schaffen Java Basics - Anfänger-Themen 3
A keine Ergebnisse - String nummer in array nummer converting Java Basics - Anfänger-Themen 1
O Datentypen String teilen Java Basics - Anfänger-Themen 5
macle Rekursive String Methode, Gerade Zahlen rausfiltern Java Basics - Anfänger-Themen 10
B String to int Java Basics - Anfänger-Themen 11
D String value change listener Java Basics - Anfänger-Themen 2
I Wo am besten eine String Konstante initialisieren? Java Basics - Anfänger-Themen 5
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
B String to Float Java Basics - Anfänger-Themen 27
B Map<String, FilterMeta, wie Wert bekommen? Java Basics - Anfänger-Themen 4
Dimax stream in string[] speichern Java Basics - Anfänger-Themen 6
Dimax String Probleme Java Basics - Anfänger-Themen 12
C String auf Dualzahl überprüfen Java Basics - Anfänger-Themen 5
L Mit Zahlen im String rechnen Java Basics - Anfänger-Themen 19
A final String verrechnen Java Basics - Anfänger-Themen 2
N String N-Gramme mit Stream erstellen Java Basics - Anfänger-Themen 7
A Implementierung von String toString methode() Java Basics - Anfänger-Themen 4
Z Matrix Klasse mit Mehrdimensionalen Array (Addition, Multiplikation, to String) Java Basics - Anfänger-Themen 57
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
Z Methode zum Heraufinden von Anagrammen ohne Java API, Ausnahme String Java Basics - Anfänger-Themen 14
Dimax Erste Schritte String replace alle Zeichen Java Basics - Anfänger-Themen 10
F Auto String mit Array Name aus Datei... oder so ähnlich Java Basics - Anfänger-Themen 4
J Characters als String zusammenfassen Java Basics - Anfänger-Themen 3
D Input/Output Mehrzeiligen String aus Textdatei erstellen Java Basics - Anfänger-Themen 5
J zwei String Arrays miteinander vergleichen Java Basics - Anfänger-Themen 18
F String auf E-Mail kürzen Java Basics - Anfänger-Themen 11
J String aus einem Array entfernen Java Basics - Anfänger-Themen 10
S String index out of range Java Basics - Anfänger-Themen 11
L String in Do-While-Schleife Abbruchkriterium Java Basics - Anfänger-Themen 1
V int zu Integer und String Java Basics - Anfänger-Themen 6
X Erste Schritte String: Alle doppelten Leerzeilen entfernen Java Basics - Anfänger-Themen 21
J String Array zu Map<Character, List<Character>> mit Streams Java Basics - Anfänger-Themen 1
P Datenspeichern im String Java Basics - Anfänger-Themen 5
S Nutzereingabe splitten und in string array wieder ausgeben. Java Basics - Anfänger-Themen 1
S String umwandeln Java Basics - Anfänger-Themen 6
S Ersetzen eines Asterix in einem String Java Basics - Anfänger-Themen 8
B String nach erstem Leerzeichen trennen Java Basics - Anfänger-Themen 7
M String in Scanner einlesen Java Basics - Anfänger-Themen 6
R String vergleichen Java Basics - Anfänger-Themen 59
L String zerlegen & elemente hinzufügen Java Basics - Anfänger-Themen 5
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
Curtis_MC 2dimensionales Array als String ausgeben Java Basics - Anfänger-Themen 2
J Zeichen im String zählen Java Basics - Anfänger-Themen 3
J erstes Vorkommen eines Chars aus einem String entfernen Java Basics - Anfänger-Themen 3
S String richtig formatieren Java Basics - Anfänger-Themen 2
M String außerhalb der main-Methode Java Basics - Anfänger-Themen 4
N Fehler bei string Attribut! Java Basics - Anfänger-Themen 18
I String Repraesentation eines Objekts Java Basics - Anfänger-Themen 1
S Gesamten String in einer Zeile ausgeben Java Basics - Anfänger-Themen 2
J Umwandlung String zu ASCII-Wert und anders Java Basics - Anfänger-Themen 17
L String als ungültig deklarieren Java Basics - Anfänger-Themen 2
I char Array to String Java Basics - Anfänger-Themen 3
I converting boolean Array to String Array Java Basics - Anfänger-Themen 10
S String split Java Basics - Anfänger-Themen 12
B String vergleich Java Basics - Anfänger-Themen 3
C Java String Methode Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Anzeige

Neue Themen


Oben