我有一个 Java Swing 应用程序,并且我为它创建了一个特殊的子 JPopupMenu,它是可滚动的,因此用户可以简单地滚动它并从中选择一个项目,就像在这个屏幕截图中一样:
我使用了这篇文章中的代码,并将其粘贴在这里,以便您查看:http ://codeshare.io/Jgqa7
现在,如果用户已经为他之前已经从该子菜单中选择过的项目打开了此子菜单,那么我想自动滚动到所选项目以显示它,就像 ensureIndexIsVisible(... ) 方法用于 JList。我花了一些时间试图解决这个问题,但没有任何进展。那么,有没有办法做到这一点?
-------------------------------------------------- ------>编辑:我正在使用的代码:
我曾尝试使用此代码强制滚动到可滚动菜单中的“发明”项,但它失败了:
JScrollPopupMenu pm = (JScrollPopupMenu)myPopupMenu.getPopupMenu();
for( Component comp: myPopupMenu.getMenuComponents() ) {
if( comp instanceof JRadioButtonMenuItem ) {
JRadioButtonMenuItem rb = (JRadioButtonMenuItem)comp;
if( rb.getText().equals( "invented" ) ) {
myPopupMenu.scrollRectToVisible( rb.getBounds() ); // Does nothing.
pm.setSelected( rb ); // Does nothing.
}
}
}
由于某种原因,它不会滚动到我想要的项目!