我的用户发现,如果JTextPane
中的最后一个字符是换行符,则光标会变小。不管我在哪里单击,Debug语句都显示相同的光标和相同的字体。我为Oracle
下载了JTextPane
演示程序,可以看到相同的行为,因此它似乎是开箱即用的行为。
有人知道解决这个问题的方法吗?
最佳答案
我的用户发现,如果JTextPane中的最后一个字符是换行符,则光标会变小
脱字号表示该行上使用的最大Font的高度。由于没有文本,因此使用较小的插入符号。这真的是一个值得担心的问题吗?
我下载了针对JTextPane的Oracle演示,并且可以看到相同的行为
将以下代码行添加到TextComponentDemo:
Rectangle caretCoords = textPane.modelToView(dot);
System.out.println(caretCoords); // added
您会看到高度发生变化。
DefaultCaret
类使用Rectangle的高度绘制插入符号。我猜您可以重写
modelToView(...)
的JTextPane
方法以基于文本窗格的Font的FontMetrics返回最小高度。不确定文本窗格可能还会影响其他哪些功能。或者,可以再次基于FontMetrics覆盖
paint()
的DefaultCaret
方法以使用最小高度。关于java - 新行大小不同后,jtextpane光标位于末尾,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28199530/