栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

ProgressBar不会在Java中更改其值

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ProgressBar不会在Java中更改其值

进度栏的值实际上已更新。但这还不只是在屏幕上。通常,我们在循环中使用进度条。但是,当您处于循环中时,您可能 通过单击按钮来调用
该循环,但该循环没有被绘制。为什么?因为您通过单击按钮来调用它。当您单击一个按钮时,您为该按钮编写的所有代码都将由来执行

AWTEventThread
。这是跟踪所有Swing组件并检查是否需要重新绘制的同一线程。那就是使您的Jframe活跃起来的线程。当您将鼠标悬停在某个按钮上并且颜色发生一些变化时,该操作由来完成
AWTEventThread

因此,在循环中工作时,AWTEventThread无法再更新屏幕。

这意味着有两种解决方案:

  1. (推荐)您应该创建一个单独的线程来执行循环。这意味着AWTEventThread可以根据需要更新屏幕(调用时

    bar.setValue(...);

    public void yourButtonClickMethod()

    {
    Runnable runner = new Runnable()
    {
    public void run() {
    //Your original pre with the loop here.
    }
    };
    Thread t = new Thread(runner, “Code Executer”);
    t.start();
    }

  2. 手动重新绘制进度条。我一直都这样做,

    bar.repaint();
    但是我想知道它是否会起作用。我就是那个方法。如果不行,请尝试:
    bar.update(bar.getGraphics());



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/596240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号