jtextpane光标在新行之后的末尾是不同的大小

时间:2015-01-28 18:17:58

标签: java swing size jtextpane caret

我的用户发现如果JTextPane中的最后一个字符是换行符,则光标会变小。无论我在哪里点击,调试语句都显示相同的光标和相同的字体。我为Oracle下载了JTextPane演示,可以看到相同的行为,因此它似乎是开箱即用的行为。

有人知道解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

  

我的用户发现如果JTextPane中的最后一个字符是换行符,则光标较小

插入符表示该行上使用的最大字体的高度。由于没有文本,因此使用较小的插入符号。这真的是一个需要担心的问题吗?

  

我下载了JTextPane的Oracle演示,可以看到相同的行为

将以下代码行添加到TextComponentDemo:

Rectangle caretCoords = textPane.modelToView(dot);
System.out.println(caretCoords); // added

您将看到高度发生变化。 DefaultCaret类使用Rectangle的高度来绘制插入符。

我猜您可以覆盖modelToView(...) JTextPane方法,根据文本窗格的Font的FontMetrics返回最小高度。不确定可能影响文本窗格的其他功能。

或者您可以覆盖paint()的{​​{1}}方法,使用最小高度,再次基于FontMetrics。