再加一个问题,怎么列出JTextArea的行号,就像很多编辑器那样
解决方案 »
- 关于SwingWorker和Swing显示的一些问题
- java 生成PNG图片
- 请教 获取图形属性问题
- java.lang.NoClassDefFoundError: javax/transaction/SystemException解决马上送分
- JDK控件编程问题?谢谢了
- 类型转化问题
- 请问sun.net类在哪个包里???
- 请教:有关JCreatorPro2.5的问题,用过的都请进来看一下吧~~~
- 怎么样让applet打开一个浏览器呢?必给分
- Java编程思想第八章的一个示例,为什么我运行无结果?
- 读取文件时编码(UTF-16,UTF-16BE,UTF-16LE)的问题!急!!!
- 请大家帮个忙
import java.awt.*;
import java.awt.event.*;
import javax.swing.text.*;public class Test {
JFrame frame;
JTextPane textPane; public Test(){
frame = new JFrame("JTextPane");
textPane = new JTextPane();
setAttr("第一行的文字",Color.red,false,12);
setAttr("第二行的文字",Color.BLACK,true,25);
setAttr("第三行的文字",Color.BLUE,false,20);
frame.getContentPane().add(textPane, BorderLayout.CENTER);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}});
frame.setSize(200,300);
frame.setVisible(true);
}
/**
* 插入文字
* @param str 字符串
* @param attrSet 字符串详细描述
*/
public void insert(String str, AttributeSet attrSet) {
Document doc = textPane.getDocument();
str = str + "\n";
try {
doc.insertString(doc.getLength(), str, attrSet);
}
catch (BadLocationException e) {
System.out.println("BadLocationException: " + e);
}
}
/**
* 简单的设置文字使用的样式
* @param str 字符串
* @param col 颜色
* @param bold 是否粗体,true为粗
* @param fontSize 字体大小
*/
public void setAttr(String str,Color col,boolean bold,int fontSize) {
SimpleAttributeSet attrSet = new SimpleAttributeSet();
StyleConstants.setForeground(attrSet, col);
StyleConstants.setBold(attrSet, bold);
StyleConstants.setFontSize(attrSet, fontSize);
insert(str, attrSet);
} public static void main(String[] args) {
new Test();
}
}
int intStartPosition = area.getSelectionStart();
<HTML>
<HEAD>
<TITLE></TITLE>
<SCRIPT LANGUAGE=javascript>
function getSelected()
{
return LISTtext.innerText
} function LISTI_onmouseover(item)
{
LISTI0.style.color = LB_FGC
LISTI1.style.color = LB_FGC
LISTI2.style.color = LB_FGC
LISTI3.style.color = LB_FGC
LISTI4.style.color = LB_FGC item.style.color = LB_HFC
} function LISTI_onmouseout(item)
{
item.style.color = LB_FGC
} function LISTI_onclick(item)
{
LISTI0.style.backgroundColor = LB_BGC
LISTI1.style.backgroundColor = LB_BGC
LISTI2.style.backgroundColor = LB_BGC
LISTI3.style.backgroundColor = LB_BGC
LISTI4.style.backgroundColor = LB_BGC
item.style.backgroundColor = LB_HBC
LISTtext.innerText = item.innerText
alert("You click " + item.innerText + "!")
} function writeListbox()
{
document.write("<SPAN id=LISTtext style=\"DISPLAY: none\"></SPAN>") document.write(" <DIV id=LIST")
document.write(" style =\"BACKGROUND-COLOR: " + LB_BGC + ";")
document.write(" BORDER-BOTTOM: " + LB_BC + " " + LB_BW + " solid;")
document.write(" BORDER-LEFT: " + LB_BC + " " + LB_BW + " solid;")
document.write(" BORDER-RIGHT: " + LB_BC + " " + LB_BW + " solid;")
document.write(" BORDER-TOP: " + LB_BC + " " + LB_BW + " solid;")
document.write(" POSITION: absolute; HEIGHT: 99px;")
document.write(" LEFT: " + LB_Left + "; TOP: " + LB_Top + "; WIDTH: " + LB_Width + "\">")
var i
for(i=0; i<ListboxData.length; i++)
{
document.write("<SPAN id=LISTI" + i)
document.write(" style=\"BACKGROUND-COLOR: " + LB_BGC + "; CURSOR: hand;")
document.write(" COLOR: " + LB_FGC + "; PADDING-LEFT: 10px; WIDTH: " + (LB_Width - 2 * LB_BW) + "\"")
document.write(" LANGUAGE=\"javascript\"")
document.write(" onmouseover=\"return LISTI_onmouseover(LISTI" + i + ")\"")
document.write(" onmouseout=\"return LISTI_onmouseout(LISTI" + i + ")\"")
document.write(" onclick=\"return LISTI_onclick(LISTI" + i + ")\">")
document.write(" " + ListboxData[i] + "</SPAN><BR>")
}
document.write("</DIV>")
} var ListboxData = new Array() var LB_BGC = "papayawhip"
var LB_FGC = "green"
var LB_HBC = "orange"
var LB_HFC = "red"
var LB_BC = "red"
var LB_BW = 1
var LB_Width = 90
var LB_Left = 80
var LB_Top = 100 ListboxData[0] = "Item0"
ListboxData[1] = "Item1"
ListboxData[2] = "Item2"
ListboxData[3] = "Item3"
ListboxData[4] = "Item4" writeListbox() </SCRIPT>
</HEAD> <BODY> <P><INPUT type="button" value="Selected" id=button1 name=button1
LANGUAGE=javascript
onclick="alert('You selected ' + LISTtext.innerText + '!')"></P>
<P>演示程序:</P> </BODY>
</HTML>
DefaultHighlighter h = (DefaultHighlighter) sour.getHighlighter();
MyHighlightPainter p = new MyHighlightPainter(Color.yellow);
int start = sour.getSelectionStart();
int end = sour.getSelectionEnd();
try {
h.addHighlight(start, end, p);
}
catch (BadLocationException ex) {
}为什么用JTextArea呢,用JTextPane更灵活
inputArea.addCaretListener(new CaretListener() {
public void caretUpdate(CaretEvent e) {
int offset = e.getDot();
//计算光标所在行列
}
});
胡乱想的,不知道行不行:)
Constructs a new highlight painter.可实际上这个方法并不存在:(
extends DefaultHighlighter.DefaultHighlightPainter {
public MyHighlightPainter(Color color) {
super(color);
}
}
我的就是这么定义的,不会出错阿,运行正常。我用jdk是1.4.2第二个问题通过offset取行列号也很好算的阿
line = sour.getLineOfOffset(offset);得到行
linestart = sour.getLineStartOffset(line);得到行的起始偏移
col = offset - linestart;得到列,可能+1调整,没具体运行
例如编辑是textarea,行号的是linetext
这样你通过textarea.getVisibleRect()获取到的rect
只需要调整一下rect的宽度,比如就设为1
然后linetext.scrollRectToVisible(rect);就行了