Java jEdit StandaloneTextArea的定制配色方案?
我将(STA)组件用于带有语法高亮显示的编辑器。我知道如何通过xml文件定义函数和关键字,但我不知道如何自定义STA的字体和颜色 以下是我迄今为止所尝试的:Java jEdit StandaloneTextArea的定制配色方案?,java,syntax-highlighting,jedit,Java,Syntax Highlighting,Jedit,我将(STA)组件用于带有语法高亮显示的编辑器。我知道如何通过xml文件定义函数和关键字,但我不知道如何自定义STA的字体和颜色 以下是我迄今为止所尝试的: Mode mode = new Mode("asm"); mode.setProperty("file", assemblymodes[COMPILER_ACME]); ModeProvider.instance.addMode(mode); standaloneTextArea.getBuffer().setMode(mode); 我曾
Mode mode = new Mode("asm");
mode.setProperty("file", assemblymodes[COMPILER_ACME]);
ModeProvider.instance.addMode(mode);
standaloneTextArea.getBuffer().setMode(mode);
我曾尝试使用painter
和setStyle
设置颜色,但没有成功:
TextAreaPainter painter = standaloneTextArea.getPainter();
painter.setStyles(SyntaxUtilities.loadStyles(Font.MONOSPACED, 14));
我知道有一些颜色属性,比如
view.style.comment1
,但是如何分配这些属性以便将自定义颜色方案应用于语法高亮显示?好的,我找到了一个解决方案。我首先通过TextArea.createTextArea()
创建了StandaloneTextArea,在设置属性时它似乎不起作用,因此我必须从StandaloneTextArea派生我自己的类:
public class RL64TextArea extends StandaloneTextArea {
final static Properties props;
static IPropertyManager propertyManager;
static {
props = new Properties();
props.putAll(loadProperties("jedit_keys.props"));
props.putAll(loadProperties("jedit.props"));
propertyManager = new IPropertyManager() {
@Override
public String getProperty(String name) {
return props.getProperty(name);
}
};
}
public void setProperty(String name, String val) {
props.setProperty(name, val);
}
private static Properties loadProperties(String fileName) {
Properties loadedProps = new Properties();
InputStream in = StandaloneTextArea.class.getResourceAsStream(fileName);
try {
loadedProps.load(in);
}
catch (IOException e) {
ConstantsR64.r64logger.log(Level.WARNING,e.getLocalizedMessage());
}
finally {
IOUtilities.closeQuietly(in);
}
return loadedProps;
}
public RL64TextArea() {
super(propertyManager);
// set syntax rules
Mode mode = new Mode("asm");
mode.setProperty("file", "syntax-rules.xml");
ModeProvider.instance.addMode(mode);
// add mode to buffer
getBuffer().setMode(mode);
// set colors
setProperty("view.style.function", "color:"+ColorSchemes.getColor(scheme, ColorSchemes.COLOR_SCRIPTKEYWORD));
setProperty("view.style.keyword1", "color:"+ColorSchemes.getColor(scheme, ColorSchemes.COLOR_KEYWORD));
// ... more colors
// load styles
getPainter().setStyles(SyntaxUtilities.loadStyles(Font.MONOSPACED, 12));
}
}