Syntaxhighlight während der Texteingabe

Status
Nicht offen für weitere Antworten.

keman

Mitglied
Ich will ein JavaScript-Editor mit Java machen, der einen Syntaxhighlight beinhalten soll. Bis jetzt hab ich es nur geschafft, dass beim Klicken eines Buttons der Quelltext gehighlightet wird. Jedoch will ich es einiges professioneller machen. Wie kann ich machen, mit der Standard-javax.swing.text-Bibliothek, dass der Text bei der Texteingabe gehighlightet wird, also z.B. dass das Word "function" rot dargestellt wird (nicht Hingergrund-, sonder Fordergrundfarbe!!)?
 
hallo!

ähnliches versuche ich auch gerade. hab auch gelesen dass da JEditorPane samt einem eigenen EditorKit gut wäre. wie das allerdings funktionieren soll weiß ich leider auch nicht.
gibt auch ein tutorial wie man einen "Java" Editor macht klick mich allerdings bin ich nicht so wirklich schlau draus geworden.
hoffe es hilft dir
 
Hallo,

ich habe mal für so etwas die Methode keyReleased() vom Interface KeyListener benutzt.
 
weiss nicht ob ihr so etwas meint:

Code:
textfield.setForeground(Color.RED);
 
Sorry,

dachte eine Methode zur Textformatierung ware schon vorhanden. Einfach mal hier in der Suche JTextPane oder JEditorPane eingeben. Beispiele sollte es hier auch irgendwo geben.
 
Das habe ich stundenlange gemacht. Jedoch ist kein brauchbares Beispiel aufgetaucht. Das beste was ich gefunden habe, ist wie man den Hintergrund eines Textes Highlightet (hat aber nicht mit setBackground() etc. zu tun!!), aber ich will wissen wie man den Fordergund ändert...
 
Da ich heute einen guten Tag habe, hier mal paar ungetestete Zeilen Code
Code:
JTextPane textPane = new JTextPane();
StyledDocument doc = textPane.getStyledDocument();
Style roterStyle = doc.addStyle(null, null);
StyleConstants.setForeground(roterStyle , Color.red);
Style blauerStyle = doc.addStyle(null, null);
StyleConstants.setForeground(blauerStyle , Color.blau);
doc.insertString(doc.getLength(), "Ich bin rot! ", roterStyle);
doc.insertString(doc.getLength(), "Ich bin blau! ", blauerStyle);
textPane.setStyledDocument(doc);
 
Ja, auf das bin ich schon seehr lange gekommen... und jetzt, das highlight während der Texteingabe???
Hier mein Code:

Code:
final JTextPane textPane = new JTextPane();
textPane.addKeyListener( new KeyAdapter() {
public void keyPressed(KeyEvent ke) {
StyledDocument doc = textPane.getStyledDocument();
Style roterStyle = doc.addStyle(null, null);
StyleConstants.setForeground(roterStyle , Color.red);
Style blauerStyle = doc.addStyle(null, null);
StyleConstants.setForeground(blauerStyle , Color.blau);
doc.insertString(doc.getLength(), "Ich bin rot! ", roterStyle);
doc.insertString(doc.getLength(), "Ich bin blau! ", blauerStyle);
textPane.setStyledDocument(doc);
}
});

oder was auch immer... aber der Inhalt des JTextPanes wird bei jeder Tastatureingabe neu geladen --> es passiert nicht das, was ich will!
 
keman hat gesagt.:
...auf das bin ich schon seehr lange gekommen...
dann hättest Du ja schon sehr lange mal den Code hier posten bzw. genauer schreiben können was Du hast und was Du willst.

Sicherlich bring es nichts nach dem Auslösen eines Events immer wieder das selbe in die Textkomponente zu schreiben. Das war ja nur ein allgemeines Bsp. wie man Text formatiert darstellen kann.
Also musst nach jeder Texteingabe den Text analysieren und überprüfen, ob ein "Schlüsselwort" geschrieben wurde, um dann anschliessend den Text in der entsprechenden Formatierung an das Document der Komponente zu übergeben.
Zur Analyse des Textes bringt z.B. die Klasse String einige Methoden mit.

Den Code spare ich mir dieses mal, denn womöglich bist Du auf das schon sehr lange gekommen...
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben