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

What is offsets.length or spans.length in the layoutMajorAxis(int targetSpan, int axis, int[] offsets, int[] spans) method?

这是我所做的一些研究,下面的答案是@StanislavL 给我的

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

关于方法

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

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

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

但是如果我们考虑段落行的 layoutMajorAxis(例如,我们的文本包含粗体字,所以该行有 3 child 个元素)。

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

问题: 1.Does offsets.length 方法给出偏移量'array'中'elements'的个数作为array.length 方法(第一个 'element' 是索引 0)或者它是偏移量 [] 数组的总和。例如,按照 link 上的示例,Y-axis 上的偏移量是 {10,30,50} 这样 offsets.length = 10+30+50 即 90?或者它会根据所指的特定 child 视图而变化?

2.if我的长轴是y-axis,在这个方法上,这个具体方法上的span也会参考y-axis吗?如果是这样,那么 x-axis 上的偏移量可以更改,因此 x-axis 的偏移量是否会在 layoutMinorView() 方法中处理?

欢迎指正。 提前致谢。

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

假设段落有 3 行文本。然后 offsets 和 span 数组长度为 3.

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

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

在段落的情况下,假设您有 3 个相等的行,高度为 12。没有边距。

所以在

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

应该 return 偏移 [0, 12, 24] 并跨越 [12, 12, 12]。

如果第二行包含一个高度为 20(更大的字体)的文本片段,偏移量和跨度应为

偏移 [0, 12, 32] 并跨越 [12, 20, 12]。