java7中的javax.swing.text.View.createFragment奇怪行为
我遇到了上述方法的奇怪行为。 有一个用于显示xml文件内容的遗留组件,它在java6中工作,但是当我切换到1.7_10时,它失败了,因为结束偏移超出了视图的范围 我对这个问题进行了一些研究,发现了以下方法javax.swing.text.ParagraphView.findEdgeSpan(View,int,int,int,int) 这是方法的代码:java7中的javax.swing.text.View.createFragment奇怪行为,java,xml,swing,java-7,jtextcomponent,Java,Xml,Swing,Java 7,Jtextcomponent,我遇到了上述方法的奇怪行为。 有一个用于显示xml文件内容的遗留组件,它在java6中工作,但是当我切换到1.7_10时,它失败了,因为结束偏移超出了视图的范围 我对这个问题进行了一些研究,发现了以下方法javax.swing.text.ParagraphView.findEdgeSpan(View,int,int,int,int) 这是方法的代码: /** * Binary search for the longest non-breakable fragment at the view e
/**
* Binary search for the longest non-breakable fragment at the view edge.
*/
private float findEdgeSpan(View v, int axis, int fp, int p0, int p1) {
int len = p1 - p0;
if (len <= 1) {
// further fragmentation is not possible
return v.getMinimumSpan(axis);
} else {
int mid = p0 + len / 2;
boolean startEdge = mid > fp;
// initial view is breakable hence must support fragmentation
View f = startEdge ?
v.createFragment(fp, mid) : v.createFragment(mid, fp);
boolean breakable = f.getBreakWeight(
axis, 0, f.getMaximumSpan(axis)) > View.BadBreakWeight;
if (breakable == startEdge) {
p1 = mid;
} else {
p0 = mid;
}
return findEdgeSpan(f, axis, fp, p0, p1);
}
}
据我所知,p1不应该大于视图的内偏移,不是吗
Parameters:
p0 the starting offset >= 0. This should be a value greater or equal to the element starting offset and less than the element ending offset.
p1 the ending offset > p0. This should be a value less than or equal to the elements end offset and greater than the elements starting offset.