aus string smileys

Ein String hat der Definition keine Bilder in sich. Alles andere ist nur Renderer-Sache.
Wo willst du es letztendlich darstellen?
 
es ist so ne art chat programm, und ich will einfach dass we man "🙂" eingibt oder so was das dann 🙂 erscheint. das ganze mache ich rel. einfach in paint(Graphics g) mit g.drawString("das was das steht, in meinem fall als variable",2,30);
 
Hm, ein Chat ohne Copy-Möglichkeit... hm.
Benutz doch einfach html für das darstellen des Verlaufen, dann kannst du die smiley einfach als <img>-Tags reinsetzen.
 
um genau zu sein, mein programm ist etwas umfangreicher, so wird alles erstmal in ein array gebracht und von da in ner for schleife dann an den bildschirm geworfen. heisst das das es so gut wie nicht geht?
 
Naja, du könntest es genau so geht auch mit
Code:
g.drawImage
machen, aber das macht nur bedingt Sinn
 
ich meinte obs dafür irgentwelche klassen von string gibt, oder ne andere variablenart
das mit drawImage könnte ich auch, würde aber viel code mitsich bringen
 
Wie gesagt: das was du vorhast hat nichts mit String zu tun.
Ich sehe aber kein Problem die Ausgabe auf html und dafür geeignete Componenten umzubieten. Das wäre auf jeden Fall sinnvoller, als irgendwas mit drawString zu machen.
 
mhn du könntest dir ein vBulletin board runter laden und schaun wie die das machen 🙂 weil anscheinend funktioniert das ja ;-)

aber generell ist es nix anderes als ein
post.replaceAll("🙂", "<img src='smiley.gif' />")
 
also rein theoretisch so:
Java:
String post ="Laber hust :)"; 
<html>String postWithSmiley = post.replaceAll(":)", "<img src='smiley.gif' />") </html>

public void paint(Graphics g){
          g.drawString()
}

oder wie? sorry wenn ich irgentwen nerve, mit komischen fragen 🙂
 
also rein theoretisch so:
Java:
String post ="Laber hust :)"; 
String postWithSmiley = post.replaceAll(":)", "<img src='smiley.gif' />") 

public void paint(Graphics g){
          g.drawString()
}

oder wie? sorry wenn ich irgentwen nerve, mit komischen fragen 🙂

Das <html> war darauf bezogen, das deine html datei dann so aussehen muss:

Java:
String post ="Laber hust :)"; 
String postWithSmiley = post.replaceAll(":)", "<img src='smiley.gif' />")

HTML:
<html>
<body>
<p><b>Person A:</b> Laber hust <img src='smiley.gif' /></p>
</body>
</html>

Und das sieht dann so aus:

Person A: Laber hust 🙂
 
Das wird nicht funktionieren 😉
[c]"🙂"[/c] ist ein Regex. Aber wir wollen die Klammer als Klammern, also quoten wir den String doch einfach: [c]Pattern.quote("🙂")[/c]. Ebenfalls muss beim zweiten Argument beachtet werden, dass [c]$[/c] dort einer Spezialbehandlung unterzogen werden müssen.
 
also jetzt steig ich garnicht mehr durch...

die java Strings sind ja variabel, warum steht dann in der html der String?
und mir fällt gerad auf... ich habe keine html ist ja ein JFrame
 
und wie? ich versteh das nicht wirklich... soll ich jetzt dafür ne eigen html schreiben oder wie?:bahnhof:
wie schon gesagt, entschuldige mich bei allen die ich nerve
 
Es genügt, deinen String einfach in [c]<html>[/c] und [c]</html>[/c] einzuschliessen. Dann kannst du da drin auch Images - eben mit HTML - einbetten.
 
Wie bereits oben geschrieben....
Java:
String post = "Laber hust :)"; 
post = post.replaceAll(Pattern.quote(":)"), "<img src=\"smiley.gif\"/>");
post = "<html>" + post + "</html>";

deineGuiKomponente.drawString(post); // oder drawXY() oder was auch immer
 
was ist Pattern? das findet mein JCreater nicht hier die fehlermeldung:

symbol : variable Pattern
location: class ChatFrame
String post = message.replaceAll(Pattern.quote("🙂"), "<img src=\"smiley.png\"/>");
^
Note: C:\Users\user\Desktop\JAVA\Documentation\100620-Lox3\OnePCChat\src\ChatFrame.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error
 
hab das jetzt mit dem smiley aus 😀 gelöst

jetzt steht im chat sowas aus "hey na 😀"
wird:
<html>hey na<img src="smiley.png"/><html>

hab das Pattern jetzt einfach übergangen also:
Code:
String post = message.replaceAll(":D", "<img src=\"smiley.png\"/>");
 
Wieso importierst du es nicht einfach?
Java:
import java.util.regex.Pattern;
Wenn du eine ganze Reihe Smileys hast, kann man den Code dann noch wunderbar mit einer Map machen:
Java:
private Map<String, String> smileys = new HashMap<String, String>();
{
    smileys.put(":)", "smiley.jpg");
    smileys.put(":D", "irgendwas.png");
    smileys.put(":(", "ichBinAuchEinEasteregg.gif");
}

public String convertSmileys(String input) {
    for (Map.Entry<String, String> smiley : smileys.entrySet()) {
        String key = Pattern.quote(smiley.getKey());
        String value = "<img src=\"" + smiley.getValue() + "\"/>";
        input = input.replaceAll(key, value);
    }
    return input;
}

Java:
String post = "Laber hust :)"; 
post = convertSmileys(post); 
deineGuiKomponente.drawString(post); // oder drawXY() oder was auch immer

Aber das musst du (noch) nicht alles verstehen, nur als Input für dich gedacht.
 
symbol : class Map
location: class ChatFrame
private Map<String, String> smileys = new HashMap<String, String>();
^
********\src\ChatFrame.java:108: cannot find symbol
symbol : class HashMap
location: class ChatFrame
private Map<String, String> smileys = new HashMap<String, String>();
^
********\src\ChatFrame.java:116: package Map does not exist
for (Map.Entry<String, String> smiley : smileys.entrySet()) {
^
Note: ********src\ChatFrame.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
3 errors

Process completed.


dass kommt raus wenn ich die sachen dort einfüge...
hab die pfade weggemacht, bisschen privatsphäre waren
 
Er will damit sagen das wenn du einen String hast mit dem Text und dem "rein-Smiley" sollst du den einfach mit den Html-Tags umschließen.

Java:
String post ="Laber hust :)"; 
String postWithSmiley = post.replaceAll(":)", "<img src='smiley.gif' />");
postwithSmiley = "<html>" + postWithSmiley + "</html>";  // siehe unten!

myEditorPane.setContentType("text/html");
myEditorPane.setText(postWithSmiley);

Oder anders gesagt, einige Textkomponenten sind fähig Html selbständig zu interpretieren 😉

BTW: der "<html>" bzw. "</html>" Tag ist überflüssig 😉


EDIT: Tschuldigung... wohl die zweite Seite übersehen -.-
 
Na klar, wenn man [c]setContentType()[/c] verwendet, dann ist es natürlich überflüssig. Aber das hab ich sowieso noch nie gesehen. Auf welchen Components gibts das - oder vermutlich die bessere Frage: erst ab Java 7?
 
Er will damit sagen das wenn du einen String hast mit dem Text und dem "rein-Smiley" sollst du den einfach mit den Html-Tags umschließen.

Java:
String post ="Laber hust :)"; 
String postWithSmiley = post.replaceAll(":)", "<img src='smiley.gif' />");
postwithSmiley = "<html>" + postWithSmiley + "</html>";  // siehe unten!

myEditorPane.setContentType("text/html");
myEditorPane.setText(postWithSmiley);

Oder anders gesagt, einige Textkomponenten sind fähig Html selbständig zu interpretieren 😉

BTW: der "<html>" bzw. "</html>" Tag ist überflüssig 😉


EDIT: Tschuldigung... wohl die zweite Seite übersehen -.-

ich hab noch nie mit nem JEditorPane gearbeitet. will in meinem code aber so wenig wie möglich ändern
hab jetzt ein String array dass ich mit ner for schleife an den bildschirm werfe...
 
Machst du es immer noch mit drawString?
Und "java" oder "JCreator" macht schon mal nirgendswo etwas, wenn du einen Fehler suchst, dann ist er in deinem Code
 
ja, hatte aber zwischenzeitlich schon was mit nem JLabel versucht. und das der fehler im quellcode steht wusste ich eigentlich auch, damit meinte ich einfach das der string mit html-tags angezeigt wird, halt als string
 
Ja, und wenn du dir die ersten 2 Seiten des Threads durchließt, dann steht da was von JEditorPane.
JLabel eignet sich genau so schlecht für dein Vorhaben wie auch drawString.
 
Java:
    public static void main(String[] args) throws IOException {
    	JFrame frame = new JFrame("Smileys");
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.add(new JLabel("<html><img src=\"http://cdn2.iconfinder.com/data/icons/lin/128/6.png\" title=\"Smiley\"></html>"));
    	frame.pack();
    	frame.setVisible(true);
    }
Funktioniert 1A in nem JLabel.
 
was mir noch aufgefallen ist (habs aus neugier auch nur kurz getestet), im EditorPane gings bei mir nur mit ner URL, nicht mit nem Lokalen Pfad!

Aber noch mal für den Ersteller:
Vergiss endlich drawString, das kann nicht gehen!
verrät dir aber uA. auch der Methodenname 😀
 
Guck doch in der API nach.
Ansonsten eine ähnliche Frage zum 2. mal: was denn für "dafür"? Stell doch mal eine ganze konkrete Frage...
 

Zurück
Oben