【问题标题】:Java repaint not working in JscrollPaneJava 重绘在 JscrollPane 中不起作用
【发布时间】: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 文件并完全删除图标……然后在我的卡片布局中替换面板后自己重新绘制它们。

标签: java swing


【解决方案1】:

验证插件似乎没有正确完成。只适用于面板,不适用于 Jscrollpane。最好是删除图标并自己绘制它们..谢谢..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 2013-11-15
    • 2014-03-01
    • 1970-01-01
    • 2016-04-17
    相关资源
    最近更新 更多