Zufall

Hey Leute!
Ich bin ein Java anfänger und würde gerne in einer JTextArea einen Zufallsgenerator mit namen machen.
Ich habe es bereits geschaft die TextArea mit beliebigen text zu füllen. Diese Reihenfolge soll jetzt durch einen Button Click durchgeschüttelt werden aber ich weiss nicht wie ich das anstellen soll. Der zufällige Name soll dann in einer JTextField angezeigt werden (diesen habe ich noch nicht erstellt)
java.PNG
Ich bräuchte leicht verständliche Hilfe.
Danke !
 

Robat

Top Contributor
Wie speicherst du die Namen denn ab? In einer Liste oder einem Array?
Wenn du sie in einer Liste gespeichert hast kann du Collections.shuffle(yourList) nutzen um die Reihenfolge der Einträge zu ändern.
Wenn es sich um ein Array handelt müsstest du die shuffle-Methode entweder selber erstellen oder (was ich aber nicht für die Beste Methode halte) das Array zu einer Liste mache, die Liste shuffeln und aus der Liste wieder ein Array machen.
 

Robat

Top Contributor
Also stehen alle Namen in einem String à la:
Java:
String names = "Thomas\n" + 
    "Peter\n" + 
    "Jakob\n" ;

Davon würde ich dir ehrlich gesagt abraten.
Speicher die Namen lieber in einer Datenstruktur (wie oben schon genannt Array, Liste, .. ) ab.. dann kannst du später leichter Namen hinzufügen und du erleichterst dir das mischen der Namen.
Java:
List<String> names = new ArrayList<>();
names.add("Thomas");
names.add("Peter");
names.add"Jakob");

Collections.shuffle(names); // zufällige Reihenfolge der Namen
 
Also
show.PNG
In das obere TextField werden namen in die darunter liegende TextArea eingetragen.
Durch den button click auf random wird eines der Items in die darunter liegende textbox ausgegeben.
Könntest du mir im Programmcode zeigen wie dies gemacht wird
 

Robat

Top Contributor
Könntest du mir im Programmcode zeigen wie dies gemacht wird
Eigeninitiative ;)

Lies dich zu Listen ein.. Damit kann man dein Programm ganz einfach aufbauen

Hinzufügen-Button-onClick() :
- Text aus Textfeld holen
- Namen zur Liste hinzufügen
- Textarea updaten

Random-Button-onClick() :
- Liste shuffeln (oben gezeigt)
- Textfeld updaten (erstes Element aus der Liste holen)
 

Robat

Top Contributor
Wenn ich dir einen gut gemeinten Tipp geben darf: leg die GUI-Programmierung noch mal beiseite, nimm dir ein gutes Grundlagenbuch / Grundlagen-Tutorial und geh diese noch mal durch.
Mir scheint es als hättest du noch nicht wirklich mit Listen, Arrays o.ä. zutun gehabt.. Das sollte man aber begriffen haben bevor man sich an die GUI-Programmierung wagt.
 
Wenn ich dir einen gut gemeinten Tipp geben darf: leg die GUI-Programmierung noch mal beiseite, nimm dir ein gutes Grundlagenbuch / Grundlagen-Tutorial und geh diese noch mal durch.
Mir scheint es als hättest du noch nicht wirklich mit Listen, Arrays o.ä. zutun gehabt.. Das sollte man aber begriffen haben bevor man sich an die GUI-Programmierung wagt.
Bin ja schon ein fortgeschrittener C-# Programmierer aber das hier fordert michn bisschen da es ziemlich anders ist
 

Robat

Top Contributor
Das ändert ja nix an der Aussage.
Wenn dich das überfordert musst du eben noch mal einen Schritt zurück.

Vielleicht noch mal ausführlicher erklärt, wie ich an die Sache rangehen würde:
- eine List<String> als Instanzattribut, die die Namen "speichern" soll
- wenn man einen neuen Namen hinzufügen will :
- wird erst der Name aus dem TextFeld geholt
- der Liste hinzugefügt List#add(..)
- TextArea geupdatet (bspw Namen dran hängen JTextArea#append(..))​
- wenn man einen zufälligen Namen haben will
- Liste mit Collections.shuffle(..) mischen
- erstes Element aus der Liste nehmen und im Textfeld anzeigen lassen List#get(..) und JTextField#setText(..)
- JTextArea updaten (wenn das gewünscht ist)​
 

MiMij

Bekanntes Mitglied
Habe es gemacht und verstehe es irgendwie nicht.
Kann mir jemand helfenß
Anhang anzeigen 10710

Bitte auch Programmcode nicht als Screenshot einfügen, sondern in Code-Tags.

Du erstellst jedes mal beim Klick auf den Button eine neue Liste, fügst nur den Text aus deinem textFieldAdd hinzu und hast quasi nur den einen Eintrag in der Liste. Wie willst du einen Eintrag mischen? Gar nicht.

Zum Vorgehen hat Robat sonst alles gut beschrieben.
 

Ähnliche Java Themen

Neue Themen


Oben