GXT中TextArea的getSelectedTex()方法在IE下报错的解决方案。
2016-07-29 00:00
417 查看
前两天在调用TextArea的getSelectedText()时总是报索引值越界的错误,让我很是纳闷...
折腾了半天,搬开GXT源代码看。由于TextArea的getSelectedText()方法是从TextField方法继承而来.. so.. 在TextField.java中翻getSelectedText()的实现。
TextField中的getSelectedText()方法实现如下。
从此得知跟该方法有关的还有两个方法: getCursorPos()和getSelectionLength() 。。。
那么错误肯定处在这两个方法上, 于是写了个Demo来分别测试这两个方法, 最后发现是getCursorPos()无法在IE下取得正确的数值。
百般无奈之下,试了试GWT中的TextArea组件。。 惊奇的发现没有GXT中的错误。 取值很正确...
最后想了一个解决方案, 重新创建一个TextArea组件,继承与GWT的TextArea.. 然后使用Ext中的样式即可..
随后对Ext JS的TextArea组件的UI进行分析... 得出如下 css 样式设置:
1. 普通状态: 采用 x-form-field 样式
2. 获得焦点: 添加 x-form-focus 样式
3. 失去交单: 移除 x-form-focus 样式即可
具体代码如下:
折腾了半天,搬开GXT源代码看。由于TextArea的getSelectedText()方法是从TextField方法继承而来.. so.. 在TextField.java中翻getSelectedText()的实现。
TextField中的getSelectedText()方法实现如下。
/** * Returns the selected text. * * @return the selected text */ public String getSelectedText() { int start = getCursorPos(), length = getSelectionLength(); return getRawValue().substring(start, start + length); }
从此得知跟该方法有关的还有两个方法: getCursorPos()和getSelectionLength() 。。。
那么错误肯定处在这两个方法上, 于是写了个Demo来分别测试这两个方法, 最后发现是getCursorPos()无法在IE下取得正确的数值。
百般无奈之下,试了试GWT中的TextArea组件。。 惊奇的发现没有GXT中的错误。 取值很正确...
最后想了一个解决方案, 重新创建一个TextArea组件,继承与GWT的TextArea.. 然后使用Ext中的样式即可..
随后对Ext JS的TextArea组件的UI进行分析... 得出如下 css 样式设置:
1. 普通状态: 采用 x-form-field 样式
2. 获得焦点: 添加 x-form-focus 样式
3. 失去交单: 移除 x-form-focus 样式即可
具体代码如下:
import com.google.gwt.user.client.ui.FocusListener; import com.google.gwt.user.client.ui.TextArea; import com.google.gwt.user.client.ui.Widget; public class TransferTextArea extends TextArea { public TransferTextArea() { this.setStyleName("x-form-field"); final TransferTextArea instance = this; this.addFocusListener(new FocusListener() { public void onFocus(Widget sender) { instance.addStyleName("x-form-focus"); } public void onLostFocus(Widget sender) { instance.removeStyleName("x-form-focus"); } }); } }
相关文章推荐
- android Google Map获取地理位置信息的方法
- GUI - Web前端开发框架
- 谷歌 Project Zero 团队宣布新政策,漏洞披露前将有完整的 90 天缓冲期
- 评价ui设计作品好坏的八个标准(界面/交互设计研究)
- Android使用Google Map浅谈
- 专家解读:开源软件项目是否会被限制出口?
- 专家解读:开源软件项目是否会被限制出口?
- IE右键菜单被修改
- IE:获取完整的网页
- IE:脱机浏览网页
- 利用IE收听“广播”
- 清除IE分级审查密码
- IE:添加编辑器
- IE:“自动完成”功能
- IE:如何做到全屏显示
- Google排名算法改变 不在以外部链为主
- 给IE加个参数 永远不怕IE主页被修改
- IE:使用搜索助手
- IE:最好用的起始页