我有一个弹出菜单,它在 JScrollPane 中的 JPanel 中显示动态创建的自定义 JPanel 对象。弹出菜单向用户显示推荐,最上面的元素是最相关的推荐。我正在使用 JPopupMenu 来显示窗口:
JPanelTemplatePopup jptep = new JPanelTemplatePopup();
JPopupMenu popup = new JPopupMenu();
popup.add(jptep);
popup.show(this, 500, 100);
问题是,我不能让 JScrollPane 滚动到最顶部的元素以首先显示它。我努力了:
- .getViewPort().setViewPosition(新点(0,0));
- .scrollRectToVisible(firstelement.getBounds());
在 validate() 之前和之后。无论我做什么,当窗口弹出时,滚动窗格总是停留在同一个地方。
我什至怀疑在显示窗口之前发生的操作被忽略了,所以我从类中创建并调用了一个公共方法,使窗口在显示后向上滚动。没有改变。
请帮忙,
埃姆雷