Java scrollRectToVisible 奇怪的滚动
Java scrollRectToVisible weird scrolling
我在 Java 中制作了自定义 Table 组件,我很好奇为什么 scrollRectToVisible 总是滚动到输入 [=18] 的右下角=]矩形.
有没有办法告诉父组件尝试查看整个矩形?
因为当你想自动滚动到 table 行时它并不好笑,它总是只查看所需 table 行的底部。
*编辑
private JPanel box = new JPanel();
private JScrollPane scroll = new JScrollPane(box, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
public void scrollTo(int index){
if(datas.size() != 0){
JPanel panel;
if(index < 0){
index = 0;
}else if(index >= datas.size()){
index = datas.size() - 1;
}
panel = datas.get(index);
Rectangle rectangle = panel.getBounds();
if(index != 0){
rectangle.setLocation(0, rectangle.y + 1);
}
box.scrollRectToVisible(rectangle);
}
}
*解决方案
哦,好吧,没关系,我发现了问题。它正在滚动到右下角,因为由于某种原因在构造函数期间 getVisibleRect 告诉所有数据为零,但是在构建了整个框架之后它开始滚动到正常位置:(
我在 Java 中制作了自定义 Table 组件,我很好奇为什么 scrollRectToVisible 总是滚动到输入 [=18] 的右下角=]矩形.
有没有办法告诉父组件尝试查看整个矩形? 因为当你想自动滚动到 table 行时它并不好笑,它总是只查看所需 table 行的底部。
*编辑
private JPanel box = new JPanel();
private JScrollPane scroll = new JScrollPane(box, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
public void scrollTo(int index){
if(datas.size() != 0){
JPanel panel;
if(index < 0){
index = 0;
}else if(index >= datas.size()){
index = datas.size() - 1;
}
panel = datas.get(index);
Rectangle rectangle = panel.getBounds();
if(index != 0){
rectangle.setLocation(0, rectangle.y + 1);
}
box.scrollRectToVisible(rectangle);
}
}
*解决方案
哦,好吧,没关系,我发现了问题。它正在滚动到右下角,因为由于某种原因在构造函数期间 getVisibleRect 告诉所有数据为零,但是在构建了整个框架之后它开始滚动到正常位置:(