PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [JAVA] Texteditor



x-mas
03-12-2003, 08:28
hallo zusammen,

ich beschaeftige mich gerade mit der programmierung eines texteditors, der
syntax-highlighting unterstuetzen soll. das ganze laeuft in java ab. bisher bin
ich soweit, dass ich einen bestimmten suchstring suche (z.B. "if") und dann
die textfarbe aendere. leider kann ich das aber nur mit der ganzen textarea
machen. meine textarea ist ein eigenes objekt, das folgende definition hat:


class TextArea extends JTextArea implements Printable
{
...
}

die textarea wird dann z.b. so erstellt:


textfeld = new TextArea();
textfeld.setEditable(true);

ich bin leider nur so weit, dass ich den ganzen text in dem objekt anders
gestalte, also


textarea.setForeground(Color.red);

wie aber gestalte ich ein einzelnes textstueck in meinem objekt
textfeld mit einer anderen farbe? jemand eine idee?

gruß

x-mas

bischi
03-12-2003, 08:37
Du könntest versuchen, die Farben durch HTML zu erreichen: Den Text einlesen und vor und nach jedem if einen HTML-Tag einfügen.

MfG Bischi

peschmae
03-12-2003, 08:38
nu ja, die dinger Unterstüzten ja HTML

viel Spass damit :D

vor allem wenn einer HTML in deiner Komponente editieren will
sieht fast so aus als müsstest du selbst proggen.

MfG Peschmä

x-mas
09-12-2003, 13:21
so, das syntax-highlighting habe ich jetzt einigermassen im griff. ich habe
es jetzt ueber setCharacterAttributes geloest. ich habe aber auch noch ein
problem. und zwar moechte ich das syntax-highlighting nur ausfuehren,
wenn in meinem jtextpane eine aenderung gemacht wurde. leider habe
ich nicht die grosse ahnung von listenern, so dass mein bisheriger so
aussieht:


class ItemAdapter implements ItemListener
{
public void itemStateChanged(ItemEvent blaeditor)
{
SyntaxHighlighting();
System.out.println("debug -- es ist was passiert");
}
}

ItemAdapter itemlistener = new ItemAdapter();

blaeditor ist ein konstruktor, der den gesamten fensteraufbau inklusive
meines jtextpanes enthaelt. ich bekomme aber keine ausgabe auf der
konsole ("debug -- es ist was passiert") und folglich wird auch die funktion
SyntaxHighlighting() nicht ausgefuehrt. auch wenn ich als ItemEvent
nicht blaeditor, sondern direkt mein jtextpane angebe (das heisst "TextEditor"),
bekomme ich keine rueckmeldung auf aktivitaet (wenn ich z.b. ein zeichen einfuege).

wo liegt also das problem? falscher listener? falscher aufruf?

gruß

x-mas