【发布时间】:2015-03-26 17:00:36
【问题描述】:
我正在使用来自http://java.dzone.com/news/how-quickly-add-validation 的验证 api。当我将所有组件放在面板中时,它可以正常工作。但是,如果我的组件位于包裹在 Jscrollpane 中的面板中,红色验证错误图标在我滚动时保持静态。我尝试重新验证和重新绘制(在调整监听器)无济于事。
majorPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener(){
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
frame.revalidate();
frame.repaint();
}
});
但是,如果我调整屏幕大小,图标会流向正确的位置。为了实验。我做了以下..稍微强制调整大小,现在它可以工作了..但是那个小调整仍然可见且烦人...
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int ScreenWidth = (int) screenSize.getWidth();
int ScreenHeight = (int) screenSize.getHeight();
majorPane.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener(){
@Override
public void adjustmentValueChanged(AdjustmentEvent e) {
frame.setSize(ScreenWidth-15, ScreenHeight-15);
frame.setExtendedState(Resource.MAXIMIZED_BOTH);
frame.revalidate();
frame.repaint();
}
});
那么我怎样才能强制重绘与调整大小一样有效???还是有更好的建议??
【问题讨论】:
-
查看Validate vs Revalidate vs Invalidate。您可能只需要使用验证。
-
经过一番阅读和努力……我决定编辑 jar 文件并完全删除图标……然后在我的卡片布局中替换面板后自己重新绘制它们。