textArea.setForeground(Color c);随便设置什么着色了,只要构造出一个Color对象了,Color还有很多常量可以使用。
解决方案 »
- 看了个例子List<HashMap<String, String>> list = new 怎么还有这样的写法?
- 网站首页问题
- 请教 ::Berkeley DB java api 问题 郁闷中,求高人指教。
- JAVA用的编译器
- java继承问题
- 接口的一个问题
- 这个问题谁能给解决一下?
- jbuilderx 编译错误:(Internal compiler error: java.lang.NullPointerException.)
- 请问如何用多线程写一个龟兔赛跑的程序
- 不知这样是否可以?
- 应聘Java,jsp,j2ee软件工程师笔试中可能出现的问题(能给出这些问题的答案吗)
- 用java实现打开一个文件夹选择对话框
不能只有一种颜色的
这样!
是设置不同的文字颜色.有谁知道Highlighter这个对象怎么用吗????
谢谢!!!!!!!!!!!!!11
package robocode.editor;
import java.awt.*;
import java.io.*;
import java.util.StringTokenizer;
import javax.swing.*;
import javax.swing.event.*;
public class FrameTest extends JFrame
implements CaretListener{ JScrollPane jScrollPane1 = new JScrollPane();
JEditorPane editorPane = null;
RobocodeEditorKit editorKit;
public FrameTest() {
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
FrameTest frameTest1 = new FrameTest();
frameTest1.setSize(400,300);
frameTest1.setVisible(true);
}
private void jbInit() throws Exception {
editorPane = new JEditorPane();
editorPane.setText("jEditorPane1");
this.getContentPane().add(jScrollPane1, BorderLayout.CENTER);
jScrollPane1.getViewport().add(editorPane, null); try
{
editorPane.setCaretColor(Color.black);
editorPane.setSelectionColor(new Color(8,36,107));
editorPane.setName("editorPane");
editorPane.setFont(new Font("monospaced", 0, 12));
editorPane.setContentType("text/java");
editorKit = new RobocodeEditorKit();
editorPane.setEditorKitForContentType("text/java", editorKit);
editorPane.setContentType("text/java");
//editorKit.setEditWindow(this);
editorPane.addCaretListener(this);
}
catch(Throwable e)
{
e.printStackTrace();
}
} public void caretUpdate(CaretEvent e)
{
int lineend = editorPane.getDocument().getDefaultRootElement().getElementIndex(e.getDot());
//editor.setLineStatus(lineend);
}
}
//import robocode.util.Utils; // Referenced classes of package robocode.editor:
// EditWindow public class JavaDocument extends PlainDocument
{ public JavaDocument()
{
needsRedraw = false;
//editWindow = null;
editing = false;
} protected JavaDocument(javax.swing.text.AbstractDocument.Content c)
{
super(c);
needsRedraw = false;
//editWindow = null;
editing = false;
} // public EditWindow getEditWindow()
// {
// return editWindow;
// } public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException
{
if(!editing)
{
super.insertString(offs, str, a);
return;
}
if(str.equals("}"))
{
if(getText(offs - 1, 1).equals("\t"))
{
super.remove(offs - 1, 1);
super.insertString(offs - 1, str, a);
} else
{
super.insertString(offs, str, a);
}
} else
if(str.equals("\n"))
{
int elementIndex = getDefaultRootElement().getElementIndex(offs);
Element element = getDefaultRootElement().getElement(elementIndex);
int startOffset = element.getStartOffset();
int endOffset = element.getEndOffset();
String elementText = null;
elementText = getText(startOffset, endOffset - startOffset);
int tabCount;
for(tabCount = 0; elementText.charAt(tabCount) == '\t'; tabCount++);
if(elementText.indexOf("{") >= 0)
tabCount++;
String tabs = "";
for(int i = 0; i < tabCount; i++)
tabs = tabs + "\t"; super.insertString(offs, str + tabs, a);
} else
{
super.insertString(offs, str, a);
}
} protected void insertUpdate(javax.swing.text.AbstractDocument.DefaultDocumentEvent event, AttributeSet attributeSet)
{
// if(editWindow != null)
// editWindow.setModified(true);
int orgChangedIndex = getDefaultRootElement().getElementIndex(event.getOffset());
super.insertUpdate(event, attributeSet);
Element rootElement = getDefaultRootElement();
javax.swing.event.DocumentEvent.ElementChange deltas = event.getChange(rootElement);
if(deltas == null)
{
Element changedElement = getDefaultRootElement().getElement(orgChangedIndex);
processMultilineComments(changedElement, false);
} else
{
Element changedElements[] = deltas.getChildrenAdded();
if(changedElements == null || changedElements.length == 0)
log("Unknown insert even, 0 children added.");
for(int i = 0; i < changedElements.length; i++)
processMultilineComments(changedElements[i], true); }
} public boolean isNeedsRedraw()
{
return needsRedraw;
} private void log(String s)
{
System.out.println(s);
} protected void postRemoveUpdate(javax.swing.text.AbstractDocument.DefaultDocumentEvent event)
{
// if(editWindow != null)
// editWindow.setModified(true);
int orgChangedIndex = getDefaultRootElement().getElementIndex(event.getOffset());
super.postRemoveUpdate(event);
Element rootElement = getDefaultRootElement();
int changedIndex = getDefaultRootElement().getElementIndex(event.getOffset());
Element changedElement = getDefaultRootElement().getElement(changedIndex);
javax.swing.event.DocumentEvent.ElementChange deltas = event.getChange(rootElement);
if(deltas != null)
processMultilineComments(changedElement, true);
else
processMultilineComments(changedElement, false);
} public void processMultilineComments(Element element, boolean isDeltas)
{
int elementIndex = getDefaultRootElement().getElementIndex(element.getStartOffset());
int startOffset = element.getStartOffset();
int endOffset = element.getEndOffset();
String elementText = null;
{
elementText = getText(startOffset, endOffset - startOffset);
}
catch(BadLocationException e)
{
log("Error processing updates: " + e);
}
boolean followingLineComment = false;
boolean previousLineComment = false;
boolean startsComment = false;
boolean endsComment = false;
MutableAttributeSet a = (MutableAttributeSet)element.getAttributes();
if(a.isDefined("inComment"))
previousLineComment = true;
else
if(isDeltas)
{
int lastElementIndex = elementIndex - 1;
if(lastElementIndex >= 0)
{
javax.swing.text.AbstractDocument.AbstractElement lastElement = (javax.swing.text.AbstractDocument.AbstractElement)getDefaultRootElement().getElement(lastElementIndex);
if(!lastElement.isDefined("endsComment") && lastElement.isDefined("inComment") || lastElement.isDefined("startsComment"))
{
a.addAttribute("inComment", "inComment");
previousLineComment = true;
}
}
}
followingLineComment = previousLineComment;
int cIndex = elementText.indexOf("//");
int eIndex;
int sIndex;
if(cIndex >= 0)
{
eIndex = elementText.lastIndexOf("*/", cIndex);
sIndex = elementText.lastIndexOf("/*", cIndex);
} else
{
eIndex = elementText.lastIndexOf("*/");
sIndex = elementText.lastIndexOf("/*");
}
if(eIndex > sIndex)
{
followingLineComment = false;
endsComment = true;
startsComment = false;
} else
if(sIndex > eIndex)
{
followingLineComment = true;
startsComment = true;
endsComment = false;
}
if(followingLineComment)
{
if(startsComment)
{
if(!a.isDefined("startsComment"))
{
a.addAttribute("startsComment", "startsComment");
setFollowingLinesCommentFlag(startOffset, true);
}
} else
if(a.isDefined("startsComment"))
a.removeAttribute("startsComment");
if(a.isDefined("endsComment"))
{
a.removeAttribute("endsComment");
setFollowingLinesCommentFlag(startOffset, true);
} else
if(isDeltas)
setFollowingLinesCommentFlag(startOffset, true);
} else
{
if(endsComment)
{
if(!a.isDefined("endsComment"))
{
a.addAttribute("endsComment", "endsComment");
setFollowingLinesCommentFlag(startOffset, false);
}
} else
if(a.isDefined("endsComment"))
a.removeAttribute("endsComment");
if(a.isDefined("startsComment"))
{
a.removeAttribute("startsComment");
setFollowingLinesCommentFlag(startOffset, false);
} else
if(isDeltas)
setFollowingLinesCommentFlag(startOffset, false);
}
} // public void setEditWindow(EditWindow newEditWindow)
// {
// editWindow = newEditWindow;
// } public void setFollowingLinesCommentFlag(int offset, boolean commentFlag)
{
int elementIndex = getDefaultRootElement().getElementIndex(offset);
elementIndex++;
for(boolean done = false; !done;)
{
Element e = getDefaultRootElement().getElement(elementIndex);
if(e == null)
{
done = true;
} else
{
MutableAttributeSet a = (MutableAttributeSet)e.getAttributes();
if(commentFlag)
{
if(a.isDefined("inComment"))
{
done = true;
} else
{
a.addAttribute("inComment", "inComment");
needsRedraw = true;
}
if(a.isDefined("endsComment"))
done = true;
} else
{
if(!a.isDefined("inComment"))
{
done = true;
} else
{
a.removeAttribute("inComment");
needsRedraw = true;
}
if(a.isDefined("startsComment"))
done = true;
}
elementIndex++;
}
} } public void setNeedsRedraw(boolean newNeedsRedraw)
{
needsRedraw = newNeedsRedraw;
} public boolean getEditing()
{
return editing;
} public void setEditing(boolean editing)
{
this.editing = editing;
} public boolean needsRedraw;
// public EditWindow editWindow;
private boolean editing;
}
jEditorPane1.setText("<html><body><font color=red>Dekn</font><br><font color=blue>Dekn dekn dekn</font></body></html>");
试试吧,绝对爽