Lay*_*yna 2 java swing jscrollpane
我在GUI的一部分上有以下基本设置:
一个JScrollPane就可以了,用的BoxLayout(新的BoxLayout(tablePanel,BoxLayout.PAGE_AXIS)),并且在此面板上一个JPanel,一堆OB面板.
我正在尝试滚动到已突出显示的面板......这几乎可以正常工作.Currenly,如果Panel在底部部分只有一半可见,ScrollPane会滚动使其完全可见..很棒.如果它在TOP部分半可见,它不会......我可以忍受.但如果突出显示底部完全不可见的面板,系统不会发表评论,但也不会在那里滚动!
if(selectedPanel!=null){
Rectangle targetRectangle = new Rectangle(selectedPanel.getX(), selectedPanel.getY(), selectedPanel.getWidth(), selectedPanel.getHeight());
Rectangle r = scrollPane.getVisibleRect();
if (!r.contains(targetRectangle)) {
tablePanel.scrollRectToVisible(targetRectangle);
}
}
Run Code Online (Sandbox Code Playgroud)
遗憾的是,我不能100%确定当选择倒数第二个面板而不可见时它的表现如何,因为如果没有一些代码体操,我无法做到这一点; 也许有人可以提供我现在可以提供的信息.
你必须比较Rectangle/返回JViewport(可见矩形JScrollPane),而不是JScrollPane
用selectedPanel.getBounds而不是(selectedPanel.getX(), selectedPanel.getY(), selectedPanel.getWidth(), selectedPanel.getHeight());
仍未centerred,必须分配JVievports和selectedPanel使用2
与使用单一代码行相同的结果 JComponentPlacedIntoJScrollPane.scrollRectToVisible(selectedPanel.getBounds())
为了更好的帮助,发布一个SSCCE/ MCVE,简短,可运行,可编译