插入符问题 顶者有分 捕捉光标事件:写个类implements CaretListener实现public void caretUpdate(CaretEvent e)方法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比如你的编辑区是一个JTextPane的对象textPane,那么textPane.addCaretListener(new caretListener());class caretListener implements CaretListener{ public void caretUpdate(CaretEvent e){ System.out.println(e.getDot());//输出光标位置 …… //实现你所需的功能代码 }} 如过获取光标所在位置属性,在caretUpdate(CaretEvent e)方法中加入:AttributeSet attr =textPane.getStyledDocument().getCharacterElement(e.getDot()).getAttributes();光标前后位置属性只要改e.getDot()-1或e.getDot()+1…… 能否用Element e=getCharacterElement(int pos)方法获取字符? 想自己做文本框吗?没事做啊,找麻烦要想知道光标位置的字符,好像得根据字体计算文本的宽高来得到此字符在字符串中的索引号。字体有Font类可用。但不知JTextPane是否有此功能 金山?跟java有什么关系?你去用c++吧 JTextArea.getText().subString(position - 2, position); TO;okwuzhijun(SKYSEA) "JTextArea.getText().subString(position - 2, position);"这个方法未必能够适用于任何文本环境吧?金山词霸无论是表格\网页\------甚至菜单中也能读取相应的文本并能翻译发音,如用java,如何实现这样的功能呢? 回复人: Guyf(不明白) java不是万能的....我认为这个说法是不负责任的.java,虽不是万能的,但这样的功能却是必定能够实现的.只是我们的水平太臭,未入门径耳!高手呢? "怎么没看见人得分啊!!"大概要结分才能有分吧?如用java连这样的问题也解决不了,太没面子了吧?等高手出现!頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂 頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂███頂頂頂頂頂 頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂██████████頂頂頂頂 頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂████████████████頂頂頂頂 頂頂頂頂頂頂頂頂頂頂████頂頂██████████頂頂頂頂頂頂頂頂頂 頂頂頂頂頂頂████████頂頂██頂頂頂████頂頂頂頂頂頂頂頂頂頂 頂█████████████頂頂頂頂頂頂頂███頂頂頂頂頂頂頂頂頂頂頂 頂███████████頂頂頂頂頂頂頂頂█████████頂頂頂頂頂頂 頂頂█████████頂頂頂頂頂頂頂頂████████████頂頂頂頂 頂頂頂█頂頂頂████頂頂頂頂頂頂████頂頂頂頂頂█████頂頂頂頂 頂頂頂頂頂頂頂頂███頂頂頂頂頂頂██頂頂頂█頂頂頂頂███頂頂頂頂頂 頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂頂██頂頂頂███頂頂頂頂頂 頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂頂██頂頂頂███頂頂頂頂頂 頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂 頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂 頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂 頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂 頂頂頂頂頂頂頂頂███頂頂頂頂頂██頂頂頂██頂頂頂頂███頂頂頂頂頂 頂頂頂頂頂頂頂頂███頂頂頂頂頂██頂頂頂██頂頂頂頂███頂頂頂頂頂 頂頂頂████████頂頂頂頂頂頂█頂頂██頂頂頂頂████頂頂頂頂頂 頂頂頂頂███████頂頂頂頂頂頂頂頂頂██頂頂█頂頂頂██頂頂頂頂頂 頂頂頂頂頂頂█████頂頂頂頂頂頂頂頂███頂頂████頂頂頂頂頂頂頂 頂頂頂頂頂頂頂頂███頂頂頂頂頂頂頂████頂頂頂██████頂頂頂頂 頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂█████頂頂頂頂頂██████頂頂頂 頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂████頂頂頂頂頂頂頂頂█████頂頂頂 頂頂頂頂頂頂頂頂頂頂頂頂頂█████頂頂頂頂頂頂頂頂頂頂████頂頂頂 頂頂頂頂頂頂頂頂頂頂頂頂██頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂██頂頂頂頂 頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂 用C++一般是用hook,就是钩子,钩出来光标所在地方的(系统内存中的)文本。好像Windows C++有这方面的函数。但是Java就不行了。第一,它能只访问在一个Java虚拟机内部的东西。第二,它是跨平台的。没有和平台相关的函数。也就不能用Windows系统内专用的函数。不过既然C++可以做,用Jni转移到Java上就可以罗。 StringTokenizer st = new StringTokenizer(source,"|");即利用该类: java.util.StringTokenizer;source是指的字符串,上面那个语句表示那source中从第一个字符开始找,以“|”为标志,然后用st.nextToken()获取“|”后的字符! StringTokenizer恐怕不妥的,因为"|"不是字符,而插入符(即光标)所在位置. 金山人家可是用的操作系统底层的API才实现的啊,什么钩子之类的技术Java怎么可能呢,只能调JNI了。你说的根本就是两码事,能跟金山比? 要是能得到插入符的位置,要取它前面的2个字符用subString不行?在文本中,"s"和"操"都算是一位str = "windows操作系统";str.subStirng(6,8)结果是 "s操" 不知道你要的是不是这样的结果,错了当我没说,嘎嘎! 今天ITAT复赛题目 为什么List.toArray()之后不能转换类型? 大家来给给意见 看看我这个makefile有什么问题 struts中一个转发得问题? 200分,高手请进,非高手也进,使applet打包通过安全认证。 java作好的程序怎样发发布呢!!!就是把程序做成EXE文件 java核心类库 很简单的问题怎么没人回答,是不是这里没有高手? 求Plutext-Enterprise-3.1.0.1.jar 如何使用Borland的Look&Feel? 初学java,今天刚知道,差点没喷血的一件事情,谁来给我指明方向?
textPane.addCaretListener(new caretListener());class caretListener implements CaretListener{
public void caretUpdate(CaretEvent e){
System.out.println(e.getDot());//输出光标位置
…… //实现你所需的功能代码
}
}
AttributeSet attr =textPane.getStyledDocument().getCharacterElement(e.getDot()).getAttributes();
光标前后位置属性只要改e.getDot()-1或e.getDot()+1
……
要想知道光标位置的字符,好像得根据字体计算文本的宽高来得到此字符在字符串中的索引号。字体有Font类可用。但不知JTextPane是否有此功能
跟java有什么关系?
你去用c++吧
"JTextArea.getText().subString(position - 2, position);"这个方法未必能够适用于任何文本环境吧?金山词霸无论是表格\网页\------甚至菜单中也能读取相应的文本并能翻译发音,如用java,如何实现这样的功能呢?
java不是万能的....我认为这个说法是不负责任的.java,虽不是万能的,但这样的功能却是必定能够实现的.只是我们的水平太臭,未入门径耳!高手呢?
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂██████████頂頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂████████████████頂頂頂頂
頂頂頂頂頂頂頂頂頂頂████頂頂██████████頂頂頂頂頂頂頂頂頂
頂頂頂頂頂頂████████頂頂██頂頂頂████頂頂頂頂頂頂頂頂頂頂
頂█████████████頂頂頂頂頂頂頂███頂頂頂頂頂頂頂頂頂頂頂
頂███████████頂頂頂頂頂頂頂頂█████████頂頂頂頂頂頂
頂頂█████████頂頂頂頂頂頂頂頂████████████頂頂頂頂
頂頂頂█頂頂頂████頂頂頂頂頂頂████頂頂頂頂頂█████頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂頂██頂頂頂█頂頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂頂██頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂頂██頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂███頂頂███頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂██頂頂頂██頂頂頂頂███頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂██頂頂頂██頂頂頂頂███頂頂頂頂頂
頂頂頂████████頂頂頂頂頂頂█頂頂██頂頂頂頂████頂頂頂頂頂
頂頂頂頂███████頂頂頂頂頂頂頂頂頂██頂頂█頂頂頂██頂頂頂頂頂
頂頂頂頂頂頂█████頂頂頂頂頂頂頂頂███頂頂████頂頂頂頂頂頂頂
頂頂頂頂頂頂頂頂███頂頂頂頂頂頂頂████頂頂頂██████頂頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂█████頂頂頂頂頂██████頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂████頂頂頂頂頂頂頂頂█████頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂█████頂頂頂頂頂頂頂頂頂頂████頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂██頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂██頂頂頂頂
頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂頂
好像Windows C++有这方面的函数。
但是Java就不行了。
第一,它能只访问在一个Java虚拟机内部的东西。
第二,它是跨平台的。没有和平台相关的函数。也就不能用Windows系统内专用的函数。不过既然C++可以做,用Jni转移到Java上就可以罗。
即利用该类: java.util.StringTokenizer;
source是指的字符串,上面那个语句表示那source中从第一个字符开始找,以“|”为标志,
然后用st.nextToken()获取“|”后的字符!
Java怎么可能呢,只能调JNI了。
你说的根本就是两码事,能跟金山比?
在文本中,"s"和"操"都算是一位
str = "windows操作系统";
str.subStirng(6,8)结果是 "s操"
不知道你要的是不是这样的结果,错了当我没说,嘎嘎!