gpt4 book ai didi

java - 自定义脚本编辑器

转载 作者:行者123 更新时间:2023-12-01 14:19:31 24 4
gpt4 key购买 nike

我正在制作自己的脚本编辑器(在本例中是Arma:冷战突击),因为我想学习,而且这已经足够具有挑战性了。

让我解决这个问题:请不要告诉我应该做更简单的事情。无论如何我都想这样做

所以,基本上我现在有一个简单的 GUI 和一个工作的新/打开/保存文件菜单。

我已经设法用不同的颜色突出显示某些单词(因为我想首先解决最难的部分),但它效率不高

我对算法提出了几个想法(没有全部实现),但我想知道你做了什么,是否有某种方法以及我做错了什么。

这一切都发生在 JTextPane 类中。

<小时/>

包含保留字的数组:

Collections.addAll(keywords, "private", "public", "if", "not", "then", "else", "else if");          
Collections.addAll(operators, "+", "-", "=", "==", "?", "!","(", ")","{", "}", "_", "-", "^", "<", ">");

ArrayList<String> keywords = new ArrayList<String>();
ArrayList<String> operators = new ArrayList<String>();
<小时/>

每次用户对文档进行更新时,它都会更新:

@Override
public void insertUpdate(DocumentEvent e) {
update();
}

@Override
public void removeUpdate(DocumentEvent e) {
update();
}
<小时/>

当用户停止输入时,它会等待 500 毫秒来更新屏幕:

Timer t;

/**
* Updates the text when user stops typing
*/
public void update(){
if (t != null) {
if (t.isRunning())
t.stop();
}

t = new Timer(500, new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {

long start = System.currentTimeMillis();

String text = getText();
int length = text.length();

SimpleAttributeSet attrs = new SimpleAttributeSet();
StyleConstants.setForeground(attrs, Color.BLACK);
StyledDocument doc = getStyledDocument();
doc.setCharacterAttributes(0, length, attrs, true);

int c = 0, carriage = 0;

while ( (c < length ) ){

if(text.codePointAt(c) == 10){
carriage += 1;
}
for (String s : keywords) {
if (text.startsWith(s, c)) {
StyleConstants.setForeground(attrs, Color.blue);
doc.setCharacterAttributes(
c - carriage, s.length(), attrs, false);
}
}

for (String s : operators) {
if (text.startsWith(s, c)) {
StyleConstants.setForeground(attrs, Color.red);
doc.setCharacterAttributes(
c - carriage, s.length(), attrs, false);
}
}

c++;
}
System.out.println("Iterations took: " + (System.currentTimeMillis() - start) + " ms");
t.stop();
}
});
t.start();
}

我如何才能更有效地做到这一点?

Image

最佳答案

这是一些代码:

http://www.codeproject.com/Articles/161871/Fast-Colored-TextBox-for-syntax-highlighting

看起来您想要“[一个]算法的想法。”因此,语言的差异应该不会有太大影响。

关于java - 自定义脚本编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17741145/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com