Java 如何单独突出显示
我试图突出显示从客户端发送的修复消息的错误。 但是,这样做时,它不会遵循此算法。如果修复消息中只有一个字符串存在错误,它将高亮显示整个字符串,否则它将不高亮显示。 基本上,我要问的是如何突出显示多个部分,而不是在出现错误时突出显示整个输出 例如: 我犯的错误Java 如何单独突出显示,java,swing,jtextarea,Java,Swing,Jtextarea,我试图突出显示从客户端发送的修复消息的错误。 但是,这样做时,它不会遵循此算法。如果修复消息中只有一个字符串存在错误,它将高亮显示整个字符串,否则它将不高亮显示。 基本上,我要问的是如何突出显示多个部分,而不是在出现错误时突出显示整个输出 例如: 我犯的错误 no error - unhighlighted error - highlighted no error - highlighted no error - highlighted no error - highlighted error
no error - unhighlighted
error - highlighted
no error - highlighted
no error - highlighted
no error - highlighted
error - highlighted
我想要的是:
no error - unhighlighted
error - highlighted
no error - unhighlighted
no error - unhighlighted
no error - unhighlighted
error - highlighted
问题领域
if(outputLine.equals("No errors")) {
tfCSVLine.append(outputLine+"\n\n\n");
lengthH += (inputLine+"\n\n\n").length();
}
else {
tfCSVLine.append(outputLine+"\n\n\n");
int pos = inputLine.indexOf(inputLine, 0);
int len = lengthH;
lengthH += (inputLine+"\n\n\n").length();
h.addHighlight(len, lengthH+(inputLine+"\n\n\n").length(),
DefaultHighlighter.DefaultPainter);
}
节目
Highlighter h = tfFIXMsg.getHighlighter();
try {
int lengthH = 0;
while ((inputLine = in.readLine()) != null) {
System.out.println ("Server: " + inputLine);
tfFIXMsg.append( inputLine + "\n\n\n");
if (inputLine.trim().equals("Bye.")) {
System.out.println("Exit program");
break;
}
Scanner input1 = new Scanner(new File(csvName));
Scanner input2 = new Scanner(new File(csvName));
Scanner input3 = new Scanner(new File(csvName));
Scanner input4 = new Scanner(new File(csvName));
String csvline = getCsvLineVal(getLocation34CSV(
getTag34Value(Tag34Location(getTagCSV(parseFixMsg(
inputLine ,inputLine))), getValueCSV( parseFixMsg(
inputLine ,inputLine))), getVal34(input1,input2)),
getCSVLine( input3, input4) );
outputLine = compareClientFixCSV( getTagCSV(parseFixMsg(
inputLine ,inputLine)), getValueCSV(parseFixMsg(
inputLine ,inputLine)), getCSVTag(csvline), getCSVValue(csvline));
out.println(outputLine);
if(outputLine.equals("No errors")) {
tfCSVLine.append(outputLine+"\n\n\n");
lengthH += (inputLine+"\n\n\n").length();
}
else {
tfCSVLine.append(outputLine+"\n\n\n");
int pos = inputLine.indexOf(inputLine, 0);
int len = lengthH;
lengthH += (inputLine+"\n\n\n").length();
h.addHighlight(len, lengthH+(inputLine+"\n\n\n").length(),
DefaultHighlighter.DefaultPainter);
}
input1.close();
input2.close();
input3.close();
input4.close();
}
您正在将
(inputLine+“\n\n\n”).length()添加到lengthH两次。你应该只做一次?另外,当“EXE”块执行时,它看起来不像是长的初始化?如果在近期内没有合适的答案,考虑创建和发布AN。这可能是JTextArea的过份,使用JTutPANEI猜测Loedolff的回答对你没有帮助。如果是这样的话,(又很抱歉听起来像一个破记录),如果你仍然被困,考虑创建和张贴一个。