Fragen zu StringTokenizer?

bruce85

Bekanntes Mitglied
Hallo,
ich habe in Java ein Spiel geschrieben und möchte gerne einen String zerlegen.

z.B. dieser String: "In dieser Familie erscheint unseres Wissens kein Nikolaus."
soll nach jede 200 Pixel zerlegt werden und der zerlegte String soll um 20 Pixel nach oben verschoben werden (da ich mit drawString arbeite) und der rest des Strings soll an der gleiche position bleiben.

So sollte es ungefähr dann aussehen:
In dieser Familie erscheint
unseres Wissens kein
Nikolaus.

Ist das irgendwie möglich mit StringTokenizer?

Ich bedanke mich schonmal für die Hilfe.

MfG
 

Der Müde Joe

Top Contributor
>Ist das irgendwie möglich mit StringTokenizer?

Nein. Der Tokenizer ist sowieso (out of order) depracated.

Ein String ist ein Zeichen. Es sagt nicht über seine Darstellung aus. 1 px oder 20px. Das ist immer relativ zu seiner Grösse der Darstellung.
Btw was heisst grösse? Im Frame?

EDIT:
Ein 'c' kann 100px oder 2px gross sein. Je nach dem wie man ihn zeichnet
 

bruce85

Bekanntes Mitglied
Danke dir.

Bevor ich einen String zeichne, lade ich erstmal ein Font, die breite des Strings kann ich dann mit font.stringWidth() abfragen.

Da mein Spiel die auflösung von 240*320 Pixel hat, kann es immer wieder vor kommen das die Schrift aus dem Bildschirm hinaus geht und genau das möchte ich vermeiden.
Deswegen möchte ich ein Funktion schreiben, der mir diesen String immer nach 200 Pixel zerlegt.

Gibt es keine andere möglichkeit?

MfG
 

Ebenius

Top Contributor
Stoppzeichen definieren (also SPC, TAB, ...), dann GlyphVector aus dem ganzen String erzeugen. Danach den Glyphvector durchgehen, immer das letzte Stoppzeichen merken und wenn 200px erreicht sind bis zum letzten Stoppzeichen zeichnen. Dann ab da weiter in ner neuen Zeile.

@Joe: Wieso ist StringTokenizer deprecated? Das ist mir neu. Quelle?

Ebenius
 

bruce85

Bekanntes Mitglied
Danke euch.

Ich habe eine eigene Methode geschrieben und funktioniert perfekt:
[JAVA=1]public void stringSplit(Graphics g, String str,Font font, int x, int y, int widthSplit) {
String userWord[] = new String[10];
int zaehler = 0;
//Erst alle Wörte im Array speichern
while (str.indexOf(" ") > 0)
{
zaehler++;
int Pos = str.indexOf(" ");
userWord[zaehler-1] = str.substring(0, Pos);
str = str.substring(Pos+1, str.length());
}
userWord[zaehler] = str.substring(0, str.length());

int stringBreite = 0;
int yPos = 0;
int zeile = 0;
String userWord2[] = new String[10];
//Schleife um die einzelnen Wörter im array userWord2 anzuhängen
for (int i=0; i<zaehler+1; i++) {
String w = userWord;
if (w != null) {
//Wenn der Text >= widthSplit ist, dann zeile um 1 erhöhen
//somit wird der restliche text in z.B. userWord2[1] gespeichert u.s.w.
if ((stringBreite+font.stringWidth(w)) >= (widthSplit)) {
stringBreite = 0;
zeile = zeile + 1;
}
if (userWord2[zeile] == null) userWord2[zeile] = "";
userWord2[zeile] = userWord2[zeile] + w+" ";
stringBreite = stringBreite + font.stringWidth(w+" ");
}
}
//und hier alle Texte die in userWord2 gespeichert sind, abfragen und dementsprechen positionieren
for (int i=0; i<zeile+1; i++) {
String w = userWord2;
if (w != null) {
g.setColor(0,0,0);
g.drawString(w,x,y+yPos-(zeile*20)+(i*20),Graphics.TOP|Graphics.LEFT);
}
}
}[/code]

Das sieht kompliziert aus, ging aber nicht anders so wie ich es gern hätte.

Wenn der Text z.B. >= 200 Pixel Breit ist, dann wird der Text davor nach oben verschoben und der nächste Text erscheint unten drunter u.s.w.

MfG
 

Ebenius

Top Contributor
Bruce, der Ansatz funktioniert zwar, ist aber vergleichsweise ineffizient. stringWidth läuft mehr oder minder ebenfalls durch die einzelnen Glyphen. Das bedeutet, dass Du eigentlich zwei verschachtelte Schleifen ausführst. Versuch mal damit einen Text von 3000 Zeichen zu zerhacken; das wird schon recht langsam werden. Aber wenn Dir das ausreicht, dann lass es so.

Ebenius
 

bruce85

Bekanntes Mitglied
Danke Dir für den Tip.

Ich habe aus langeweile ein Wordmix Spiel für Handy mit Touchscreen geschrieben und es dürfen ja maximal nur 10 Wörter im Satz vorhanden sein.

Ist ja nicht gross. ;-)

Und daher, wenn der User einen Wort anklickt, dann wird diese am unteren Bildschirmrand gezeichnet, ist die eingabe dann vielleicht größer wie 200 Pixel, somit verschiebe ich das vordere Teil des Strings um 20 Pixel nach oben und der rest wird einfach an der gleiche Position weiter gezeichnet, nicht das der Text irgendwann außerhalb des Bildschirms in der Y-Achse verschwindet.

Ich denke, das die Methode vollkommen reicht, die ich geschrieben habe, soll ja nix grosses werden.

MfG
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
H Fragen zu Wrapperklassen Java Basics - Anfänger-Themen 29
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
A Bei VierGewinnt fragen ob man gegen CPU oder Menschen spielen will. Java Basics - Anfänger-Themen 7
A Bei VierGewinnt vorher fragen, ob man gegen den Computer spielen möchte oder gegeneinander. Java Basics - Anfänger-Themen 1
A Bei VierGewinnt fragen, ob man gegen den Computer spielen möchte oder gegeneinander Java Basics - Anfänger-Themen 1
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
G Fragen zu Kompelierfehler in Aufgabe. Java Basics - Anfänger-Themen 25
E Bäume/ allgemeine Fragen Java Basics - Anfänger-Themen 21
O Falsche Antworten zu Fragen Java Basics - Anfänger-Themen 4
S Diverse Fragen vor Schulaufgabe ;) Java Basics - Anfänger-Themen 4
S Fragen zu Ausgabe double und float Java Basics - Anfänger-Themen 3
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
C 3 Fragen rund um Klassenattribute Java Basics - Anfänger-Themen 8
L Erste Schritte Log4J Fragen Java Basics - Anfänger-Themen 5
NeoLexx Fragen zu diversen Elementen der Javabibliothek Java Basics - Anfänger-Themen 5
D Budget Manager fragen zur Umsetzung Java Basics - Anfänger-Themen 9
N Fragen zur Datenspeicherung Java Basics - Anfänger-Themen 45
T Java Anfänger mit konkreten Fragen Java Basics - Anfänger-Themen 2
CT9288 Fragen zu Java Java Basics - Anfänger-Themen 16
W Fragen zu Generics Java Basics - Anfänger-Themen 14
T ObjectInput/OutputStream Fragen zur Funktionsweise Java Basics - Anfänger-Themen 3
J Fragen zu einer Methode Java Basics - Anfänger-Themen 3
J Fragen zum Code aus dem Buch "Schrödinger programmiert Java 2.te Ausgabe" Java Basics - Anfänger-Themen 6
Z Fragen zu Exception (Throws/throw) Java Basics - Anfänger-Themen 7
J Fragen zu Input/Output Java Basics - Anfänger-Themen 3
J Erste Schritte Oracle Tutorials zu Java 8 - Fragen dazu Java Basics - Anfänger-Themen 1
H Java Quereinsteiger Roadmap und Fragen Java Basics - Anfänger-Themen 29
H fragen Java Basics - Anfänger-Themen 15
M Samelsarium Grundlegender Fragen 2 Java Basics - Anfänger-Themen 9
M Sammelsarium an Grundlagen Grundlagen Fragen Java Basics - Anfänger-Themen 11
B Java ist / wird kostenpflichtig. Ein paar Fragen Java Basics - Anfänger-Themen 1
J Fragen zu synrchonized und kritischen Abschnitten Java Basics - Anfänger-Themen 5
S Fragen zu einem Rechentrainer Java Basics - Anfänger-Themen 2
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
J Wo kann man Fragen zu ireport stellen. Java Basics - Anfänger-Themen 0
M Fragen zum Anlegen und Benutzen von Listen Java Basics - Anfänger-Themen 9
G Ein paar Anfänger Fragen zu StdDraw Java Basics - Anfänger-Themen 4
D Fragen zur Klassen Java Basics - Anfänger-Themen 4
Aprendiendo Zwei Fragen und ein geerbtes "protected"-Attribut Java Basics - Anfänger-Themen 2
J Interface Fragen bezüglich "Sauberkeit" von Code Java Basics - Anfänger-Themen 5
D Objekte-Fragen Java Basics - Anfänger-Themen 1
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
D Anfänger-Fragen(Parameter einer Methode) Java Basics - Anfänger-Themen 7
K Zwei Fragen zu Graphics/Graphics2D Java Basics - Anfänger-Themen 5
R Fragen über den Konstruktor Java Basics - Anfänger-Themen 0
Azazel Ein paar Fragen zu Methodenaufrufen(java.awt) Java Basics - Anfänger-Themen 2
S Erste Schritte Fragen zur For-Schleife Java Basics - Anfänger-Themen 9
C Interface Fragen zum Interface Java Basics - Anfänger-Themen 7
GreenTeaYT Exception und zur OOP fragen? Java Basics - Anfänger-Themen 3
C Fragen zum Spigot Plugin (1.8) Java Basics - Anfänger-Themen 6
J Fragen zu Exceptions Java Basics - Anfänger-Themen 24
N Quiz- Fragen zufällig anzeigen lassen Java Basics - Anfänger-Themen 7
J Verschieden Fragen über Java Programmierung Java Basics - Anfänger-Themen 3
L Viele Fragen zu den Grundlagen Java Basics - Anfänger-Themen 5
B Fragen zu ZIP-File Java Basics - Anfänger-Themen 9
L fragen zu arrays Java Basics - Anfänger-Themen 8
L Fragen zu selbstgeschriebenem Programm Java Basics - Anfänger-Themen 5
M Fragen zum Auslesen von HTML Seiten Java Basics - Anfänger-Themen 5
J Threading-Aufgabe. Totale Noob Fragen, aber bitte trotzdem beantworten ;) Java Basics - Anfänger-Themen 7
S Java Fragen Konstruktor & Statische Methoden Java Basics - Anfänger-Themen 4
K Erste Schritte Frage Antwort Spiel - Fragen zur Planung Java Basics - Anfänger-Themen 2
C Java Applet Fragen: Serialisierung, Excel import Java Basics - Anfänger-Themen 2
Anfänger2011 2 kleine Fragen zu ArrayListen Java Basics - Anfänger-Themen 5
S Fragen zu Ausdrücken&Bedingungen Java Basics - Anfänger-Themen 5
A 2 kurze Anfänger fragen Java Basics - Anfänger-Themen 6
H grundlegende Fragen Java Basics - Anfänger-Themen 3
V Interface ich schäme mich das zu fragen, aber ich schaff nicht ein Text zu zentrieren :( [javaFX] Java Basics - Anfänger-Themen 6
N Programm: Fragen beantworten Java Basics - Anfänger-Themen 6
C Anfänger Anfänger Fragen Java Basics - Anfänger-Themen 8
Z Compiler-Fehler LinkedList Fragen Java Basics - Anfänger-Themen 4
D Rekursion Allgemeine Fragen Java Basics - Anfänger-Themen 2
D [Fragen] zu Methoden Java Basics - Anfänger-Themen 2
S Fragen zur Implementierung eines Binärbaums Java Basics - Anfänger-Themen 3
T Ein paar Fragen zu OOP und Java. Java Basics - Anfänger-Themen 16
J Allgemeine Fragen zur GUI Java Basics - Anfänger-Themen 1
johnnydoe Erste Schritte Erster Blick - erste Fragen Java Basics - Anfänger-Themen 11
DStrohma Grundsätzliche Fragen zu Drag & Drop Java Basics - Anfänger-Themen 1
N Klassen fragen zur getter und setter methode Java Basics - Anfänger-Themen 11
S 3 Fragen, Verzeichnis, GridLayout psoitionieren, Werte für JSpinner Java Basics - Anfänger-Themen 2
T Fragen zu Set / Relationen verknüpfen Java Basics - Anfänger-Themen 4
S 2 Fragen Java Basics - Anfänger-Themen 4
S Hallo und Fragen zu Arbeitsverzeichnis und Menü Java Basics - Anfänger-Themen 8
N Java Fragen... Java Basics - Anfänger-Themen 10
F ExecutorService Fragen! Java Basics - Anfänger-Themen 2
O HashMap Fragen Java Basics - Anfänger-Themen 8
C Fragen zu Arrays Java Basics - Anfänger-Themen 19
T viele "kleine" Fragen... Java Basics - Anfänger-Themen 3
S Fragen zur Implementierung eines Adressbuches Java Basics - Anfänger-Themen 20
S Fragen zu Arrays Java Basics - Anfänger-Themen 6
K Diverse Fragen zum Fehlerlogging Java Basics - Anfänger-Themen 9
N StringReader - Fragen Java Basics - Anfänger-Themen 8
C Einige Fragen zu Frames Java Basics - Anfänger-Themen 7
M Erste Schritte Allgemeine Fragen Java Basics - Anfänger-Themen 4
PaulG Fragen zu Binärbaum Java Basics - Anfänger-Themen 21
P Methoden Aquarium (Fragen zum Scanner) Java Basics - Anfänger-Themen 5
T Erste Schritte Fragen zu meinen kleinen Programm Java Basics - Anfänger-Themen 9
D 2 Fragen: Position ändern vs. LayoutManager / Bilder einfügen im Vordergrund Java Basics - Anfänger-Themen 3
O Zwei Fragen zu Methoden Aufrufen Java Basics - Anfänger-Themen 5
B fragen zur for-schleife und arrays Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben