Ein paar Kleinigkeiten

Ilyustar

Mitglied
Hallo,

ich bin gerade dabei ein kleines Spiel in Java zu programmieren und hab noch ein paar Kleinigkeiten die ich einbauen möchte.. da meine Java Kentnisse noch nicht so ausgereift sind möchte ich einfach mal hier fragen:

a)
Ich bräuchte in meiner GUI ein Feld das entweder das System.out also alles was in der Konsole ankommt anzeigt oder auf Button-Click mir eine Zeile hinzufügt. Nach ein wenig googlen hab ich die JTextArea gefunden und mal reingebastelt. Nun steh ich vor dem Problem, dass er alles in die selbe Zeile haut..(wenn ich die 2. Methode verwende) %n \n oder ähnliches weiss ich nicht wo ichs hinsetzen soll oder ob das überhaupt geht. Ich hab das jetzt so gelöst oder auch nichtgelöst:
Java:
jTextArea.append(antwort + " Euro gesetzt.");
wenn ich aber
Java:
jTextArea.insert(antwort + " Euro gesetzt.", 1);
verwende setzt er es genau an diese Stelle, ich möchte aber das er einfach eine Zeile weiter springt
und es dann postet da ich mehrere Buttons hab und man die in beliebiger Reihenfolge hinzufügen können soll.(ich hoffe das ist verständlich genug)
Die Variante mit dem System.out Stream hab ich nicht wirklich verstanden bisher oder nichts aufschlußreiches gefunden.

b)
Ich möchte am Ende einer Runde dieses Feld wieder leeren wie ist der Befehl hierfür? 🙂

c)
Ich habe ein Random Objekt erzeugt und generiere damit Zahlen - Nun möchte ich aber nicht das die Zahl sofort angezeigt wird wie es jetzt der Fall ist. Ich hatte mir überlegt eine For-Schleife einzubauen die dann z.B. 50x irgendne Zahl anzeigt bevor die "echte" am Ende da steht. So nachdem ich das gebastelt hatte war das Problem das er die 50 Zahlen so schnell anzeigt das man es nicht erkennt(logisch). Dann hab ich mich auf die suche gemacht um ein delay einzubauen aber das einzige das ich fand waren die Methoden
Java:
wait()
und
Java:
Thread.sleep()
- Welche mein Programm nur zum aufhängen gebracht haben. Die Frage ist nun, ist das realisierbar? Wenn ja, wie? Das soll dem ganzen halt noch ein wenig Spannung bringen.


Das wars erstmal, ich hoffe ihr könnt mir weiterhelfen.
Ilyustar





Edit:

Okay, den Zeilensprung hab ich nun gelöst 😀 (war ja auch nur Syntax Nichtwissen meinerseits).
Nun bleibt die Frage offen wie ich den Kompletten Text der Area wieder lösche.
 
Zuletzt bearbeitet:
a) \n imüsste auch von der JTextArea verstanden werden.
Java:
jTextArea.append("eine Zeile \n");
b)
Java:
jTextArea.setText("");
c) dafür verwendet man Threads bzw. Timer
 
Okay vielen Dank schonmal,
Jetzt bin ich gerade dabei ein JScrollPane an meine TextArea hinzuzufügen was noch nicht ganz läuft..
und könntest du eventuell c) etwas spezifischer oder anhand eines Beispiels näher erläutern, bin wirklich blutiger Anfänger 🙂

Danke!
 
Wegen des ScrollPane rate ich einfach mal ins Blaue, weil zu wenig Code da ist:

Du hast eine JTextArea mit einem JScrollPane. Wahrscheinlich hast du auch einen JFrame. Hast du dem JFrame vielleicht die JTextArea gegeben? Soweit ich weiß, muss man dem nämlich dann das ScrollPane übergeben, die TextArea hängt dann einfach mit dran.
 
Scrollbar is drinne und funktioniert, danke!
Jetzt nur noch das mit dem sleep/wait/timer oder wie auch immer ich das am besten realisieren soll 🙂
Kann mir da jemand weiterhelfen?
 
Aloha,
mit Threads kenne ich mich leider nicht so sehr aus, aber ich versuche mal das Konzept und einfache Anwendung zu erläutern.

Du hast ja anscheinend schon sleep verwendet ohne extra Threads zu bauen. Du kannst dein Programm aber (wenn du keine extra Threads einbaust) als eine reine Abfolge von Befehlen betrachten. Wenn du nun also ein Befehl "Warte Zeit x" einbaust, so wird gewartet und es werden in dieser Zeit keine weiteren Befehle ausgeführt.
Wenn du das aber willst, so musst du extra Threads einbauen. Wenn du dir einen extra Thread schreibst, und diesen startest, so hast du praktisch 2 Stapel von Befehlen, welche (mehr oder minder) parallel abgearbeitet werden. Wenn nun in einem der Befehl "Warte Zeit x" aufgerufen wird, so kann der andere ganz normal weiter seine Befehle ausführen.

Wie du diese Threads genau schreibst ist z.B. hier beschrieben: Java ist auch eine Insel – 9.2 Threads erzeugen
Grundprinzip dabei ist, dass eine Klasse von dir Runnable implementieren muss.
Wenn du nun einen Thread startest, welcher die obige Klasse übergeben bekommt, wird die run() methode dieser Klasse aufgerufen.
Dort könntest du also eine for-Schleife mit 50 Durchläufen starten.
In dieser rufst du dann immer Math.random() auf, schreibst das Ergebnis irgendwo hin (updatest gegebenenfalls die ui) und legst den Thread für ein paar Millisekunden schlafen.
Nach der For-Schleife schreibst du dann das endgültige Ergebnis.

Denke so müsste das ungefähr funktionieren, hoffe es hilft ein wenig.
 
hallo nochmal,
hab das mit den threads jetzt leider nich hinbekommen, stehe aber nun noch vor einer letzten frage: unzwar habe ich meine gui größten teils mit eclipse erstellt.. nun würd ich gern wissen wie ich die damit erstellten z.Z. noch viereckigen buttons an einer seite z.b. rund machen kann bzw. generell die Form verändern kann und wie ich die ränder der buttons z.b. gelb färben könnte?

vielen dank,
ilyu
 
Moin,

hab das mit den threads jetzt leider nich hinbekommen, stehe aber nun noch vor einer letzten frage: unzwar habe ich meine gui größten teils mit eclipse erstellt.. nun würd ich gern wissen wie ich die damit erstellten z.Z. noch viereckigen buttons an einer seite z.b. rund machen kann bzw. generell die Form verändern kann und wie ich die ränder der buttons z.b. gelb färben könnte?

hier mal ein paar Grundlagen zum Umgang mit Button :
Galileo Computing :: Java ist auch eine Insel (8. Auflage) – 16.6 Schaltflächen

Gruß
Klaus
 

Danke, aber das hilft mir leider nicht viel weiter da dass was ich brauche dort nicht erwähnt wird :/

Java:
jTextArea.append(antwort + " Euro gesetzt." + "\n");

Danke auch dir, aber das wurde ja bereits geklärt 🙂
 
hallo nochmal,
hab das mit den threads jetzt leider nich hinbekommen, stehe aber nun noch vor einer letzten frage: unzwar habe ich meine gui größten teils mit eclipse erstellt.. nun würd ich gern wissen wie ich die damit erstellten z.Z. noch viereckigen buttons an einer seite z.b. rund machen kann bzw. generell die Form verändern kann und wie ich die ränder der buttons z.b. gelb färben könnte?

vielen dank,
ilyu
Eigenes Look And Feel ;-)

Du könntest tricksen und bei einem JButton die Border wegmachen und nur ein Icon anzeigen lassen
Du könntest aber von AbstractButton erben und so Deinen eigenen Button definieren.
 

Neue Themen


Zurück
Oben