JButton ActionListener - GUI 仅在单击 JButton 后更新

2023-11-21

我的 JButton ActionListener 遇到问题。我在另一个类中定义了一个 doTheCleaning() 方法,当调用该方法时,会对我的 GUI 进行一系列更改。

public void doTheCleaning(){
    //change image icon
    //had thread.sleep here
    //insert to text area
    //had thread.sleep here
    //etc
}

然后在另一个类中,我实例化了包含 doTheCleaning() 方法的类,并使用 jbutton 的 actionperformed() 方法编写了 ActionListener,如下所示:

public void actionPerformed(ActionEvent e){
   //some code
   //newClass.doTheCleaning();
}

我知道如何完成其​​余的操作,例如 addActionListener() 等,因此无需对此提出疑问。我担心的是,调用 doTheCleaning() 方法时执行的 GUI 中的所有更改仅在单击按钮后才适用。发生这种情况时,标签和文本区域中发生的更改之间的连续性不会显示。如果我直接在测试器类中调用它,那么代码可以正常工作,但在 actionperformed 方法中调用它只显示 GUI 的最终状态。我需要显示哪个元素首先发生变化,然后是接下来的变化,依此类推。

当我需要仅在单击 JButton 时发生这些更改时,如何实现它?

**我还不太擅长用java做GUI。我希望你们在我不给出代码的情况下也能理解我的观点。但如果有必要的话我可以。谢谢。


请勿在内部进行任何密集操作EDT,否则 GUI 将无响应,并且您可能看不到 GUI 更新。您可以使用的最佳选择是SwingWorker:

  • 覆盖doInBackground(),并将任何长操作放入此方法中,以便它将在单独的线程上运行,而不是在EDT.

  • 对于任何 GUI 创建或更改 GUI 组件的状态doInBackground(), use publish(V... chunks)将数据发送到process(List<V> chunks)。你需要覆盖process(List<V> chunks)。另请注意process(List<V> chunks)执行于EDT.

  • After doInBackground()返回,done()执行于EDT您可以覆盖它以将其用于任何 GUI 更新。您还可以检索从返回的值doInBackground()通过使用get().

  • 注意SwingWorker<T,V> is generic,并且您需要指定类型。T是返回的对象类型doInBackground() and get(), while V是您传递给的元素的类型process(List<V> chunks) via publish(V... chunks).

  • execute()方法通过调用启动 Swing WorkerdoInBackground() first.

有关这方面的更多信息,请阅读Swing 中的并发.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JButton ActionListener - GUI 仅在单击 JButton 后更新 的相关文章

  • 如何创建一个显示 Spinners 的 x 和 y 值的表格?

    我想创建一个位于图表右侧的表格 其中显示 2 列 x 和 y 值已输入到xSpin and ySpin旋转器 我已经画了一张我想要桌子放置的位置的图 我尝试过在网格窗格布局中使用文本框来创建表格并将值直接输入到文本框网格中 但是我无法将它们
  • org.apache.sling.api.resource,version=[2.3,3) -- 无法解析

    您好 我无法访问我的项目内容 我已经上传了从 CQ 访问内容所需的所有包 我唯一能看到的是 org apache sling api resource version 2 3 3 无法解析 这是否是异常的原因 如果是 请告诉我如何解决 中Q
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • 如何在不超过最大值的情况下增加变量?

    我正在为学校开发一个简单的视频游戏程序 我创建了一个方法 如果调用该方法 玩家将获得 15 点生命值 我必须将生命值保持在最大值 100 并且由于我目前的编程能力有限 我正在做这样的事情 public void getHealed if h
  • 我需要什么库才能在 Java 中访问这个 com.sun.image.codec.jpeg?

    我正在用java创建一个图像水印程序 并导入了以下内容 import com sun image codec jpeg JPEGCodec import com sun image codec jpeg JPEGEncodeParam im
  • 我可以使用子接口重新编译公共 API 并保持二进制兼容性吗?

    我有一个公共 API 在多个项目中多次使用 public interface Process
  • 使用 AES SecretKey 的 Java KeyStore setEntry()

    我目前正在 Java 中开发一个密钥处理类 特别是使用 KeyStore 我正在尝试使用 AES 实例生成 SecretKey 然后使用 setEntry 方法将其放入 KeyStore 中 我已经包含了代码的相关部分 The KS Obj
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • Calendar.getInstance(TimeZone.getTimeZone("UTC")) 不返回 UTC 时间

    我对得到的结果真的很困惑Calendar getInstance TimeZone getTimeZone UTC 方法调用 它返回 IST 时间 这是我使用的代码 Calendar cal Two Calendar getInstance
  • 有没有一种快速方法可以从 Jar/war 中删除文件,而无需提取 jar 并重新创建它?

    所以我需要从 jar war 文件中删除一个文件 我希望有类似 jar d myjar jar file I donot need txt 的内容 但现在我能看到从 Linux 命令行执行此操作的唯一方法 不使用 WinRAR Winzip
  • 如何知道抛出了哪个异常

    我正在对我们的代码库进行审查 有很多这样的陈述 try doSomething catch Exception e 但我想要一种方法来知道 doSomething 抛出了哪个异常 在 doSomething 的实现中没有 throw 语句
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • Netty:阻止调用以获取连接的服务器通道?

    呼吁ServerBootstrap bind 返回一个Channel但这不是在Connected状态 因此不能用于写入客户端 Netty 文档中的所有示例都显示写入Channel从它的ChannelHandler的事件如channelCon
  • 我可以创建自定义 java.* 包吗?

    我可以创建一个与预定义包同名的自己的包吗在Java中 比如java lang 如果是这样 结果会怎样 这难道不能让我访问该包的受保护的成员 如果不是 是什么阻止我这样做 No java lang被禁止 安全管理器不允许 自定义 类java
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • Java中的Object类是什么?

    什么是或什么类型private Object obj Object http download oracle com javase 6 docs api java lang Object html是Java继承层次结构中每个类的最终祖先 从
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树

随机推荐

  • 使用自己的应用程序打开自定义文件[重复]

    这个问题在这里已经有答案了 可能的重复 如何将文件扩展名与 C 中的当前可执行文件关联 所以 我正在申请学校 最终项目 在这个应用程序中 我有一个Project 班级 这可以保存为自定义文件 例如测试 gpr gpr 是扩展名 如何让 Wi
  • 将静态参数传递给类

    据我所知 你不能将参数传递给 C 中的静态构造函数 但是 在创建类的实例之前 我确实需要传递两个参数并将它们分配给静态字段 我该怎么办 这可能是对 工厂方法的调用 class Foo private int bar private stat
  • Python场景变化检测

    我想知道是否有人有Python和视频处理的经验 本质上 我想知道是否有任何库可以让我在视频中进行场景检测 如果没有 是否有任何可以让我将视频分成一系列帧并让我处理像素 Thanks OpenCV有 Python 绑定 我不认为它有任何内置的
  • 如果我在 PHP 中执行 print_r ,它会以垃圾形式打印数组

    如何以树状格式打印数组 使其更易于阅读 Try pre pre 它将提供 HTML 的空白策略修剪掉的正确树结构
  • Rails 当前页面?当方法为 POST 时“失败”

    我有一个非常简单的问题 我有一页报告 每个报告都有自己的选项卡 我在用着current page 以确定应突出显示哪个选项卡 当我提交任何报告时 current page 似乎不再起作用 显然是因为请求方法是POST 这是预期的行为吗cur
  • 在 OSX Catalina 上安装用于 gem 安装的 Ruby 开发工具

    我知道这个问题有很多例子 我已经完成了这些答案中的所有内容 但 4 小时后却一无所获 我正在尝试在 Catalina 10 15 7 上安装 gem 并获得非常流行的 System Library Frameworks Ruby frame
  • 如何在 WPF 中删除鼠标悬停时按钮的发光

    我在 WPF 中使用一个简单的按钮 我已经在背景上放置了按钮的图像 我的问题是 当我将鼠标指针移动到按钮时 它会获得默认发光并覆盖作为背景给出的图像
  • Hive 中的增量/增量负载

    我有以下用例 我的应用程序有一个表多年数据 in RDBMSD B 我们已经用过sqoop将数据获取到 HDFS 并加载到按以下分区的 hive 表中年 月 现在 应用程序每天都会更新并将新记录插入 RDBMS 表中 这些更新的记录可以跨越
  • powershell 2.0重定向文件处理异常

    我正在寻找解决方案The OS handle s position is not what FileStream expected Do not use a handle simultaneously in one FileStream a
  • 为什么 LINQ 中的 Union 函数不删除重复条目?

    我正在使用 VB NET 我知道 Union 通常按 ByRef 工作 但在 VB 中 字符串通常被视为原始数据类型 因此 问题就在这里 Sub Main Dim firstFile secondFile As String resulti
  • 为什么这个 Perl 6 feed 操作符是一个“虚假语句”?

    我把这个例子取自第 10 天 Perl 6 2010 降临节日历的 Feed 操作员随着轻微的变化 uc为了 ucfirst不再存在了 my rakudo people
  • Angularjs 忽略时区

    有没有更好的方法来忽略 Angularjs 中的时区 2014 01 18 14 30 00 而不是 2014 01 18 15 30 00 function Scoper scope scope datum 2014 01 18T14 3
  • C++ 中的惰性求值

    C 没有对惰性求值的本机支持 如 Haskell 那样 我想知道是否可以以合理的方式在 C 中实现惰性求值 如果是的话 你会怎么做 编辑 我喜欢康拉德鲁道夫的回答 我想知道是否可以以更通用的方式实现它 例如通过使用参数化的惰性类 它本质上适
  • Spring中的Websocket身份验证和授权

    我一直在努力正确实现 Stomp websocket 验证 and 授权与Spring Security 对于后代 我将回答我自己的问题以提供指导 问题 Spring WebSocket 文档 用于身份验证 看起来不清楚 ATM 恕我直言
  • apache上的vue-router,子目录中的SPA,只能通过重定向访问页面

    所以我有一个在 apache 开发服务器上设置的客户端 Vue 应用程序 我这样做是为了配合生产环境 该应用程序位于子目录中 我在 vue router 上设置了 base 选项以进行匹配 如果我导航到我的虚拟主机根目录 它会正确重定向 但
  • 如何获取iframe响应头?

    有没有办法获取 iframe onload 的响应标头 我已经用谷歌搜索过它 但实际上我找不到任何有用的东西 并不真地 如果 iframe 位于同一域中 您可以访问其文档对象 其中包含一些有用的信息 例如document referrer
  • 如何将暴露给 COM 互操作的 .NET 对象标记为单线程?

    在 C 中定义 COM 可见类时 我可以在头文件中定义支持的线程模型 threading single line coclass default IComInterface threading single vi progid Exampl
  • Sass 使用与号 (&) 与类型选择器组合父级

    我在 Sass 中筑巢时遇到问题 假设我有以下 HTML p href class item Text p p href class item Text p a href class item Link a 当我尝试将样式嵌套在以下内容中时
  • 将基本类型转换/转换为派生类型

    我通过派生现有的 NET 框架类来扩展它 如何将基类型的对象转换为派生类型 public class Results Framework methods public class MyResults Results Nothing here
  • JButton ActionListener - GUI 仅在单击 JButton 后更新

    我的 JButton ActionListener 遇到问题 我在另一个类中定义了一个 doTheCleaning 方法 当调用该方法时 会对我的 GUI 进行一系列更改 public void doTheCleaning change i