我的用户发现,如果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/

10-11 15:33