当前位置: 首页 > 面试题库 >

Java GUI JProgressBar无法绘制

隗新霁
2023-03-14
问题内容

我有一个我想解决的GUI问题,但是我对所发生的事情感到困惑,希望你们中的一个能解释一下。代码太大了,无法上传,但是我将详细解释发生了什么:

我有一堂课ProgessBarJDialog里面有秋千JProgressBar。我有一些getter和setter方法来更改我喜欢的标准,但是问题来了。

ProgressBar在方法内部产生 myButtonActionPerformed

myButton.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                myButtonActionPerformed(evt);
            }
        });

实质上,当用户单击此按钮时,处理开始并ProgressBar生成。

用户当前JFrame在他们前面有一个,并且该进度条在中弹出JDialog。在Netbeans中逐步调试模式后,我可以看到JProgressBar的值已更改,但是在我的程序正在处理时,该条在视觉上保持为0%,然后在离开上面的add
action侦听器方法后立即跳到100%,几乎是如果它正在等待重画,直到退出该侦听器。我不明白什么?有什么我可以调用的东西,它将迫使它在此myButtonActionPerformed方法内部进行更新,而不是等到它无用之前。


问题答案:

您在EDT中花费的时间在做什么?请记住,AWT / Swing有一个专用的线程来执行GUI工作-
处理事件处理程序,重新绘制GUI等。如果您对该线程进行长时间运行的操作,则Swing不会重新绘制。

尝试在另一个线程中执行任务,并从那里相应地更新进度条。但是,请使用SwingUtilities.invokeLaterinvokeAndWait更新进度条,以确保GUI更新在EDT上进行。否则事情会变得很奇怪。



 类似资料:
  • 问题内容: 我正在尝试制作一个在鼠标本地化处绘制一个圆的简单Java程序,它获取了鼠标的X和Y坐标,但是它没有绘制任何内容,我试图绘制一个String,一个圆和一条线,但是没有任何效果,我稍微修改了代码,但仍然无法正常工作 问题答案: 不要直接在上执行自定义绘画。如果可以,请始终在替代方法上进行操作。 为此,请勿使用无限循环。有用于Mouse Motion收听的

  • 问题内容: 我创建了一个程序,可以在屏幕上移动一个球。我以前把所有内容都放在一个类中,但认为它看起来太乱了,所以我将其分为三个不同的类:Main …初始化所有内容,Game …绘制所有内容并为一个JPanel,AL则为一个KeyListener(这也是问题所在)。问题是,无论我尝试将其传递给我的类,我都无法从AL类获得重绘程序。有人能帮忙吗?这是我的三个班级: -- -- 问题答案: 让我们从显而

  • 问题内容: 我在RHEL机器上从源代码安装了python-igraph 0.5.4和igraph 0.5.4(也经过测试0.6)。一切都很好,除非我尝试绘制时得到。 “ TypeError:绘图不可用” 在配置或安装阶段没有错误或警告。 我需要在Linux上安装什么才能使绘图工作?我没有root用户,因此需要从源代码安装它。 问题答案: igraph使用Cairo库进行绘图,因此您将需要Cairo

  • 问题内容: 我已经建立了俄罗斯方块游戏。现在,我已经使用JPanel来显示内容和块(使用paintComponents()方法)。 问题是,当我尝试从另一个JFrame调用tetris程序时,它根本无法绘制。 我的俄罗斯方块主菜单的代码是: 当调用MatrixBoard的构造函数时,俄罗斯方块游戏会在新窗口中开始。但是,这些块在屏幕上不可见。MatrixBoard的代码是: 请帮忙。我怀疑问题出在

  • 我正在开发一个应用程序,它有一个应用程序功能,可以在谷歌地图上显示团队作为标记。 我可以把自己显示为移动时更新的标记 问题是,标记仅在我第一次转到MapFragment时显示。当我导航到另一个片段并返回到地图时,我看到一个没有标记的空地图 尝试#3,请查看以前实现的历史记录,这些实现略有不同: 我的片段布局: 我的IncidentMapFragment代码,现在根据用户反馈进行更新。更新很少。请参

  • 我创建了一个程序,只需在屏幕上移动一个球。我以前把它都放在一节课上,但我觉得它看起来太乱了,所以我把它分成了三个不同的课:主课。。。初始化一切,游戏。。。它描绘一切,是一个JPanel,AL是一个KeyListener(这也是问题所在)。问题是,我无法让程序从我的AL类重新绘制,无论我试图传递什么。有人能帮忙吗?以下是我的三门课: - -