A JTextPane
让你embed JComponents
and images。当您选择文档的某个部分时,文本会突出显示,但嵌入的项目不会显示。事件发生后,您可以通过CaretListener
通知嵌入式组件,但我想知道在鼠标选择期间是否有方法让它们突出显示?在JTextPane中选择嵌入项目
2
A
回答
0
安装定制Highlighter
到JTextPane
,可通知嵌入式组件时,他们需要强调与否:
textPane.setHighlighter(new CustomHighlighter());
// ...
private final class CustomHighlighter extends DefaultHighlighter {
@Override
public Object addHighlight(int p0, int p1, HighlightPainter p) throws BadLocationException {
Object tag = super.addHighlight(p0, p1, p);
/* notify embedded components ... */
return tag;
}
@Override
public void removeHighlight(Object tag) {
super.removeHighlight(tag);
/* notify embedded components ... */
}
@Override
public void removeAllHighlights() {
super.removeAllHighlights();
/* notify embedded components ... */
}
@Override
public void changeHighlight(Object tag, int p0, int p1) throws BadLocationException {
super.changeHighlight(tag, p0, p1);
/* notify embedded components ... */
}
}
0
YOu可以使用MouseMotionListener并处理mouseDragged事件。然后您需要使用viewToModel()方法来知道模型的哪一部分被选中。
-1
好吧,我做了类似的事情,很久很久了。在我的情况下,嵌入式组件是聊天编辑器中的笑脸。你做的是,当选择发生时,你会得到标记和点(e.getMark,e.getDot)。如果笑脸位于标记和圆点之间,那么它应该被高亮显示,所以您在笑脸组件中设置一个字段,使其突出显示,并提出重绘请求。最后,在笑脸组件的paint(g)方法中,您只需突出显示它。
+0
“在事件发生后,您可以通过CaretListener通知嵌入式组件,但我想知道是否有方法在鼠标选择期间突出显示它们” – 2009-10-27 09:44:27
相关问题
- 1. 在JTextPane中选择多个项目
- 2. 在JTextPane中选择文本
- 3. 选择嵌套集合中的项目
- 4. 禁用在JTextPane中选择范围
- 5. 在formview中选择项目根据下拉选择的项目
- 6. 在gridview中选择项目
- 7. 在Asp.Net中选择项目?
- 8. 在JTextPane中不显示项目符号
- 9. 下拉选项在PHP中选择结束日期嵌入HTML
- 10. 导轨,通过嵌套项目选择
- 11. 在换行之后在JTextPane中插入选项卡
- 12. 入门选定项目,没有选择
- 13. HTML嵌套选择选项
- 14. 选择嵌套选项
- 15. 第n个孩子选择以防止嵌套项目选择
- 16. 入门选择从目录选择项目与scaladin
- 17. 选择项目
- 18. 选择项目
- 19. Angularjs:在选择控制选择项目
- 20. 如何从JTextPane中获取选择
- 21. 在故事板项目中嵌入cocos2d
- 22. 在WPF中嵌入项目图标
- 23. 在嵌入式项目中使用talloc
- 24. 在嵌入式项目中使用Valgrind
- 25. 从mysql中选择项目
- 26. 选择,如选择字段中键入Symfony2中选择选项
- 27. 简单的列表项目多项选择不选择项目
- 28. 从Javascript中的嵌套列表中预先选择项目
- 29. 加入溶液或选择项目SVN
- 30. telerik radgrid插入后选择项目
我已经做了一点挖掘,我强烈怀疑的路要走是在JTextPane上安装一个自定义的荧光笔。我明天会试试这个,如果我可以得到它的话就添加一个答案。 – 2009-10-27 09:47:12