Я работаю с JEditorPane в Java, используя JForms, который отображает файл, который открывает пользователь, когда на него нажимают.JEditorPane отображает этот файл и на данный момент имеет подсветку синтаксиса для многих файлов, таких как c, c ++, java, python и т. Д.
Я просматриваю код и вижу, где он инициализирует этот кодвыделите синтаксис для примерных строк, которые я нашел в операторе switch, в зависимости от того, что пользователь открывает
fileType = "text/xml";//all in a switch statement not exact code
fileType = "text/c";
fileType = "text/cpp";
, а затем JEditorPane устанавливает тип содержимого с помощью строки
editorPane.setContentType(fileType);
Так что ясделал, изменил код для распознавания make-файлов.Я добавил весь необходимый код для нового типа файла makefile и просто чтобы убедиться, что он работает правильно, я использовал подсветку синтаксиса cpp, чтобы убедиться, что я правильно его кодировал, и да, все мои make-файлы открывались на панели редактора с помощью подсветки c ++.
Теперь я добавил новый contentType, чтобы посмотреть, будет ли он работать, заменив строки, которые использовали подсветку синтаксиса c ++ в моих make-файлах, на
contentType = "text/makefile";
, а также
contentType = "text/x-makefile";
просто дляПосмотрите, когда я открою make-файл, он правильно выделит синтаксис, а это не так.
Я углубился в код, в частности метод setContentType, и увидел, что это скомпилированный код.Так что я предполагаю, что все эти другие типы файлов и их возможности подсветки синтаксиса встроены в Java, и для работы подсветки синтаксиса make-файла я должен использовать пользовательский код?