Как да оцветявате ключови думи в текстов редактор на Java?

Имам малък работещ текстов редактор, написан на Java с помощта на JTextPane, и бих искал да оцветя конкретни думи. Ще работи по същия начин, по който ключовите думи в Java (в рамките на Eclipse) са оцветени; ако те са ключова дума, те се маркират, след като потребителят приключи с въвеждането им. Нов съм в текстовите редактори, реализирани в Java, някакви идеи?


person zzelman    schedule 20.10.2013    source източник
comment
Това е доста сложна задача, ако можете да намерите библиотека на трета страна, това значително ще опрости проблемите. Като каза това, бихте могли да погледнете този пример и този пример, ако наистина искате да опитате ръката си в него. ..   -  person MadProgrammer    schedule 20.10.2013
comment
@MadProgrammer Не го комплексирайте. Използвайте JSyntaxPane вместо това ;-) Знам, че сте прост човек. :-P   -  person An SO User    schedule 20.10.2013
comment
@LittleChild Не става въпрос за мен, това е, което OP иска ;)   -  person MadProgrammer    schedule 20.10.2013
comment
@MadProgrammer Направете го лесно за всички ?? :P   -  person An SO User    schedule 20.10.2013
comment
@LittleChild Оперативната програма може да не е да се използват библиотеки на трети страни, така че демонстрирането на един единствен избор всъщност може да е лош избор. Освен това, след като осъзнаят сложността на задачата, те наистина могат да решат, че библиотеката на трета страна е това, от което се нуждаят.   -  person MadProgrammer    schedule 20.10.2013
comment
@MadProgrammer Всъщност подчертах сложността :D   -  person An SO User    schedule 20.10.2013


Отговори (1)


В компютърните науки лексикалният анализ е процес на преобразуване на поредица от знаци в поредица от токени. Програма или функция, която извършва лексикален анализ, се нарича лексикален анализатор, лексер, токенизатор [1] или скенер. Лексерът често съществува като отделна функция, която се извиква от анализатор или друга функция, или може да се комбинира с анализатора при анализиране без скенер.

Като каза това, това не е тривиална задача. Нуждаете се от библиотека от високо ниво, за да направите това. Ще улесни задачата ви. Какъв е изходът?

Използвайте ANTLR. Ето какво пише на сайта му:

ANTLR е мощен генератор на анализатор, който можете да използвате за четене, обработка, изпълнение или превод на структуриран текст или двоични файлове. Той се използва широко в академичните среди и индустрията за изграждане на всякакви езици, инструменти и рамки....
IDE на NetBeans анализира C++ с ANTLR.

Ето, проблемът е решен. Авторът на ANTLR също има книга за това как да използвате ANTLR, която може да искате да купите, ако искате да научите как да я използвате.

След като ви даде достатъчно разтопяване на мозъка, има готово решение за вас: JSyntaxPane. Точно като всеки JCOmponent, вие го инициализирате и го поставяте в JFrame. Работи като чар. Поддържа много езици освен Java

person An SO User    schedule 20.10.2013