layoutMajorAxis(int targetSpan,int axis,int [] offsets,int [] spans)方法中的offsets.length或spans.length是什么?

时间:2017-07-19 08:57:06

标签: java swing jtextpane paragraph jeditorpane

这是我做过的一点研究,下面的答案是由@StanislavL给我的

查看教程http://java-sl.com/editor_kit_tutorial_views.html

关于方法

protected void layoutMajorAxis(int targetSpan,int axis,int [] offset,int [] spans)

事实上,它定义了儿童的位置和范围。 让我们考虑一个段落的layoutMajorAxis。所以我们布置段落的行 targetSpan是我们想要达到的空间量(在我们的例子中是段落高度,它可以是例如页面高度或表格单元格高度)。让我们考虑简单的情况,高度是JEditorPane的宽度100像素。 所以我们应该计算每一行的开始位置(偏移量)以及它需要多少空间(跨度)。 轴是Y_AXIS

所以,如果我们为段落调用super.layoutMajorAxis然后将偏移更改为5,10,15等。我们将重叠行。

但是如果我们考虑layoutMajorAxis作为段落的行(例如我们的文本包含粗体字,那么该行有3个子元素)。

在这种情况下,targetSpan是所有者段落的宽度,偏移是每个元素跨度的开始是每个文本元素的大小。

问题: 1. offsets.length方法给出了偏移'数组'中'elements'的数量,就像array.length方法那样(第一个'element'是索引0)或者它是offset []数组的总和。例如,在链接上的示例之后,Y轴上的偏移是{10,30,50},使得offsets.length = 10 + 30 + 50,即90?或者它会根据您所指的特定子视图而改变?

2.如果我的主轴是y轴,在这个方法上,这个特定方法的跨度也是指y轴?如果是这样,那么x轴上的偏移可以改变,因此x轴的偏移将在layoutMinorView()方法中处理吗?

欢迎更正。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

偏移量和跨度数组大小由子视图的数量定义。

假设段落有3行文字。然后偏移量和跨度数组长度为3。

您应该定义偏移量(每行的像素位置)。通常,第一个偏移从0开始(如果没有边距)。

跨度反映每个子视图的大小(再次以像素为单位)。

如果是段落,则假设您有3个相等的行,高度= 12。没有利润。

的召唤之后
protected void layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans)

应返回偏移[0,12,24]并跨越[12,12,12]。

如果是第2行包含高度为20(较大字体)的文本片段,偏移量和跨度应为

偏移[0,12,32]和跨度[12,20,12]。