Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich will Texte auf eine bestimmte Länge kürzen:
Beispiel zur verdeutlichung:
Ich habe ein JLabel, dass folgenden Text enthält:
<html><font style=\"background-color:#F0C0AC;\">Dies ist ein langer, leicht rötlicher Text.</font></html>
Wenn das Label nun zu klein ist, stellt es den Inhalt dar, als ob er
<html><font style=\"background-color:#F0C0AC;\">Dies ist ein...</font></html>
wäre, kürzt also den Inhalt und hängt ein "..." an, sodass die Länge passt.
Genau so etwas bräuchte ich, also eine Funktion die mir einen zu langen String zurechtschneidet.
Leider hab ich keine Ahnung wonach ich dazu suchen muss und selber fällt mir auch nicht all zu viel ein :-/
System.out.println("ich bin kurz".replaceAll("^(.{20}).+$", "$1..."));
System.out.println("ich bin ein ganz langer String :)".replaceAll("^(.{20}).+$", "$1..."));
public String shorten(String q, int maxl)
{
final String endl = "...";
if(q.length()>maxl)
return q.substring(0,maxl-1-endl.length() )+endl;
return q;
}
endl ist der String den du am Ende haben willst.
maxl ist die maximale Anzahl an Zeichen die der String inkl. den "..." haben soll.
q ist der String der gekürzt werden soll.
Umm, ich will den String nicht auf eine bestimmte anzahl zeichen kürzen, ich will ihn auf eine
bestimmte pixelmäsige Länge kürzen.
Z.B. iiiii sind 5 Zeichen und brauchen so gut wie keinen Platz.
mmmmm sind ebenfalls fünf, aber viel länger.
Eine Art quick and dirty lösung wäre z.b. in einem loop alles in ein JLabel zu schreiben, schauen ob minlength() ok ist und andernfalls immer das letzte Zeichen kürzen, bis es halt ok ist.
Dabei den Inhalt in "<>" ignorieren, da es html-codes sein werden.
Schau dich mal in der klasse FontMetrics nach "getStringBounds" oder so um. Das dynamisch auf einer eigenen Component zu machen könnte aber fummelig werden,je nachdem worum es im Datail geht...
das scheint eine interessante Klasse zu sein:
Was mir grad vorschwebt wäre etwas alla
[Java]
int length = 0;
for(int i = 0; i < mystring.length; i++){
length += fontMetric.charWidth(mystring);
if(length>max){
return mystring.substring(0, i);
}
}[/code]
So etwa in die Richtung, noch ohne ignorieren der Tags, etc.
Aber wie genau wirkt sich die Schriftgröße darauf aus?
Size 2 ist ja nicht doppelt so groß wie Size1 - was hat das jeweil für nen Faktor?