请 问 如 何 改 变 TextArea 中 的 text 的 颜色? textArea.setForeground(Color c);随便设置什么着色了,只要构造出一个Color对象了,Color还有很多常量可以使用。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 textArea中有很多文字,但是这些文字要设置成不同的颜色啊,然后显示在一个TextArea啊!不能只有一种颜色的 textArea.setBackguand(Color.green);这样! 不是设置色.是设置不同的文字颜色.有谁知道Highlighter这个对象怎么用吗???? TextArea只能有种色,象记事本一样的要有不同的设置,可以用JEditorPane或JTextPane 哦,JEditorPane和JTextPane怎么用啊?谢谢!!!!!!!!!!!!!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); }} package robocode.editor; import javax.swing.text.*;//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; try { 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;} 何必那么麻烦,如果只是简单的应用,我教你一招---------HTML大法jEditorPane1.setContentType("text/html");jEditorPane1.setText("<html><body><font color=red>Dekn</font><br><font color=blue>Dekn dekn dekn</font></body></html>");试试吧,绝对爽 javabean while循环异常 java解压缩的问题 在普通类中用不了String 类的方法getChars(int,int,char[],int)么? 初学者请教大侠们~ 又论接口,没有方法体,实现它的类的方法体可以完全不一样,这样有什么意义呢 在JAVA中写文件和读文件的问题~~~请教~~~ String类型的变量可以有多少字节? Resultset的问题! 我时用jdbc打开数据库,使用后是否要显示的关闭数据库,还是等java的垃圾回收器来处理。 应聘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>");
试试吧,绝对爽