[Java]Objekte während der Laufzeit erstellen und übertragen?
Servus.
Mein Plan ist in einem kleinen Java Programm ein Objekt auf Knopfdruck (Swing JFrame) zu erstellen und dem variable Werte/Attributwerte hinzuzufügen. Danach soll es an eine andere Methode übergeben werden.
Meine Frage nun: Ist es möglich den Knopf mehrere Male zu drücken? Gibt es eine Funktionsweise Objekte immer wieder zu erstellen? Müssen ja verschiedene Pointer als 'Bezeichnung' haben, da denke ich mal, der gleiche Name immer wieder würde Exceptions werfen, weil es das Objekt schon gibt.
LG
3 Antworten
"Müssen ja verschiedene Pointer als 'Bezeichnung' haben" sehe ich als falsch an, soweit ich das verstehe.
Du kannst beispielsweise bei einer Klasse Foo ganz viele
new Foo() hintereinander aufrufen.
Jetzt musst du dir noch überlegen, wo die Ergebnisse gespeichert werden.
Da fällt mir ein List<Foo> oder Foo[] ein.
Vielleicht kommen wir der Lösung gemeinsam näher, denn deine Frage habe ich nicht so ganz verstanden.
Danke für das Kompliment.
Das ist ja noch einfach. Zu Java kann ich gerne weitere Fragen beantworten, nur das Installieren von Java liegt mir nicht so. Habe das Spektrum Java 6 ... Java 8 mal intensiv gelernt.
Das hilft schon mal ein wenig. Meine Idee wäre ungefähr das hier:
Buttonclick(){
JTextField test = new JTextField();
}
Das Problem was ich mir da denke, ist, dass dann doch mehrere Objekte mit "test" ansprechbar sind. Also wenn ich
test.setText("bla");
mache. Sehe ich da was falsch?
Das Objekt wird überschrieben, du könntest dir eine Klasse erstellen die ein JFrame und deine Attribute/Wette speichert. Du kannst dir dann die objekte in eine ArrayList speichern, in Java kannst du das Objekt einfach mit dem selben Namen neu zuweisen, da kommt kein Fehler.
LG
Okay, aber das heißt, das alte mit all seinen Attributen würde verloren gehen? Ich habe vor per Button Textfelder und Checkboxen auszufragen, die ganzen Werte als Objekt zu speichern und dieses wiederum an eine weiter Methode zu geben. Wenn der Knopf neu gedrückt wird, sind die alten Daten weg, aber das ist ja kein Problem. Danke dir!
Nein, nicht wenn du sie in eine ArrayList oder ähnliches speicherst, es gibt in Java keine pointer, wenn du ein Objekt neu zuweist dann wird das alte (sofern nicht mehr benötigt) von der Garbage Collection zerstört. Falls dein Objekt aber in einer List/Array ist dann wird es nicht von der Garbage Collection recycled.
LG
Kommt auf die Implementierung an. Wäre es zum Beispiel so aufgebaut:
button.onClick {
JFrame frame = new JFrame()
...
}
wird immer ein neues frame erstellt
Wie spreche es denn korrekt an? Mit "frame" würden sich dann ja alle angesprochen fühlen oder nicht? :D
List<JTextField> textFieldList = new ArrayList<>();
textFieldList.add( new JTextField() );
Später:
for ( JTextField textField : textFieldList )
{
textField.setText( "Mein Lieblingtext" );
}
für WasWeisIch() über alles Instanzen in textFieldList aus.