【发布时间】:2010-08-10 14:59:08
【问题描述】:
我有一个弹出菜单,它在 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() 之前和之后。不管我做什么,当窗口弹出时,滚动窗格总是停留在同一个地方。
我什至怀疑在显示窗口之前发生的操作被忽略了,所以我从类中创建并调用了一个公共方法,使窗口在显示后向上滚动。没有任何改变。
请帮忙,
埃姆雷
【问题讨论】:
-
我认为这类似于竞态条件。 在显示弹出窗口之后 需要更新滚动条。我想我需要找到一种在弹出窗口完全显示时触发动作的监听器。
标签: java user-interface swing jscrollpane