我有一个带有多个子组件级别的JPanel,也有一个JScrollPane。我将焦点监听器放在一些子组件上,以向这些组件添加某些行为,但是我也希望在获得焦点时将该组件滚动到JPanel的视口中。

我的问题是,有没有人可以使用通用功能来实现此功能,类似于浏览器DOM函数“scrollIntoView”?我已经尝试过通过JComponent.scrollRectToVisible的各种输入来解决这个问题,但是我想我还没有弄清楚这个神奇的词。

提前致谢。

最佳答案

显而易见的是,在JScrollPane上调用scrollRectToVisible,它将可以正常编译,但不会执行您想要的操作。您必须在滚动窗格的视口中包含的对象上调用scrollRectToVisible。该代码应类似于:

java.awt.Component focusedComponent = evt.getComponent();
panel.scrollRectToVisible(focusedComponent.getBounds(null));
repaint();

09-30 17:38