问题标签 [event-dispatch-thread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1583 浏览

java - JTextArea 默认值?

我只被教导通过事件调度程序线程管理 GUI。目前我正在使用textArea.append("something");事件调度程序线程的外部,但我希望这总是在运行程序开始时发生。如何设置监听器以在程序启动时采取行动,或者我所做的是否可以接受?

0 投票
3 回答
1237 浏览

java - 为什么我在 Java 中开始计算时我在 Java 中的 GUI 冻结

我正在开发一个java应用程序

但是当我开始我的申请过程时我的申请冻结

因此我可以在此过程中更新我的 GUI

你们知道如何解决这个问题吗?

我会很感激你的回复 thx

伙计们,我已经尝试过了,但它仍然冻结了 GUI

这是我的代码

0 投票
1 回答
911 浏览

java - 在 Swing 中的 JTextArea 上使用 setText 时出现死锁

我有以下 Java 程序,其中一个在大约 50% 的启动尝试中启动。其余时间它在后台死锁而不显示任何 GUI。我将问题追溯到 JTextArea 对象的 setText 方法。使用像 JButton 这样的另一个类适用于 setText 但 JTextArea 死锁。谁能向我解释为什么会发生这种情况以及以下代码有什么问题:

}

0 投票
2 回答
435 浏览

java - 创建具有 gui 的服务器应用程序

我必须创建一个具有 GUI 的应用程序。我的应用程序必须作为服务器工作。当它启动时,它必须接受所有传入的连接并将输出写入 JTextArea。我的问题是我必须以我可以接受连接的方式创建ServerSocket ss = new ServerSocket(port_number)方法ss.accept。我试图在我的 gui 的主构造函数中创建,但作为ServerSocket一个I/O请求 gui 卡住了。解决解决方案的一些想法?

我在我的 GUI 的构造函数中创建:

connection()我创建服务器套接字并接受调用的方法在哪里

0 投票
1 回答
121 浏览

iphone - 通过方法dispatch_async从子线程发送到主线程的IPhone Event,慢,尝试改进。

App从子线程接收到事件,但是我们需要将它发送到主线程进行UI更新问题,目前使用方法dispatch_async,由于主线程非常繁忙,有时需要两三秒才能到达目的地,慢,尝试改进,但到目前为止没有找到更好的方法,任何想法或讨论将不胜感激,在此先感谢。

0 投票
2 回答
11516 浏览

java - Swing - 更新标签

我有一个消息标签和一个提交按钮。提交按钮将被多次按下,每次按下的操作最多可能需要一分钟。

按下按钮时,我想将消息设置为空,任务完成后,我想将消息设置为“完成”。

是否可以在方法运行之前(或在方法中)更新该消息标签submitActionPerformed(),但在单击按钮之后?

0 投票
1 回答
4756 浏览

java - java SwingWorker.doInBackground() 不能访问 GUI 元素

可能这是微不足道的,我很难理解SwingWorker上的简单文档。

这是复制粘贴的内容

工作流程

SwingWorker 的生命周期涉及三个线程:

当前线程:在该线程上调用了 execute() 方法。它安排 SwingWorker 在工作线程上执行并立即返回。可以使用 get 方法等待 SwingWorker 完成。

工作线程:在该线程上调用 doInBackground() 方法。这是所有后台活动都应该发生的地方。要通知 PropertyChangeListener 绑定的属性更改,请使用 firePropertyChange 和 getPropertyChangeSupport() 方法。默认情况下,有两个可用的绑定属性:状态和进度。

事件调度线程:所有与 Swing 相关的活动都发生在该线程上。SwingWorker 调用 process 和 done() 方法并通知此线程上的任何 PropertyChangeListener。

通常,当前线程是事件调度线程。

--

工作线程不是 EDT,因此 doInBackground() 中的代码不得访问 GUI 元素。我的理解正确吗?

背景:我们有使用 SwingWorker 的小代码,但有 doInBackground() 创建 FileChooser 并调用setCurrentDirectory(). 我怀疑这导致我的异常与http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6637181几乎相同 (11-关闭,不是缺陷)

0 投票
2 回答
90 浏览

java - 事件调度线程 - 报告

我想知道,我想从我的摇摆工作人员向主线程报告某种形式的进度,这样我的界面就可以更新为随着进度的增加而变化的标签,例如

检查 1/6...

检查 2/6...

..

..

我在 c# 中做了类似的事情,但不记得现在如何无法将逻辑转移到这个 java 应用程序。我在这里使用的是摇摆工人而不是后台工人

请有人能告诉我我需要研究什么

谢谢

0 投票
1 回答
663 浏览

java - Java:第二个窗口是空白的

我有一个奇怪的问题......我是一个相对较新的“狂热”Java 程序员(我以前的职业生涯中曾经以黑客 Perl 为生),正在开发我的第一个半真实应用程序。“Main-Class”是MyApp创建UserInputDialog实例的类。

UserInputDialogextend是我编写的一个类JFrame,它实现了ActionListenerand KeyListener,使用FlowLayout了 ,并向用户展示了JLabel,JTextField和 Cancel/OK JButtons。当JTextField生成KeyEventwherekeyReleased() == KeyEvent.VK_ENTER或“OK”JButton生成时ActionEvent,进行UserInputDialog一些输入验证,调用setVisible(false),然后调用MyApp.doSomething( JTextFieldInstance.getText() )

这一切都完美无缺。但现在我正在尝试向 中添加进度窗口MyApp,因为doSomething()有时可能需要相当长的时间才能完成。

我创建了一个ProgressWindow类,它扩展JFrame、使用BorderLayout和抛出一个JProgressBarin 。NORTH和 a JScrollPane(包装 a JTextArea)在 . CENTER. ProgressWindow当从测试数据实例化ProgressWindowTester并提供测试数据时,它可以完美地工作。如果我将循环的测试复制并粘贴ProgressWindowTesterMyApp其中并且没有MyApp实例化,它也可以正常工作UserInputDialog(即,没有任何内在因素导致MyApp这种行为;这似乎是某种我不理解的交互,在UserInputDialogProgressWindow)。

但是当我尝试按预期使用ProgressWindowMyApp,即ProgressWindowsetVisible(true),我得到一个空白的 Swing 窗口(大小合适,并且标题栏设置正确)。和组件JProgressBarJScrollPane / JTextArea出现。这些ProgressWindow方法被MyApp正确调用(System.err.println()消息显示正确的交互),一切似乎都工作正常,只是,应该在ProgressWindow......中可见的组件不是。

我可以发布代码片段,但这有点令人费解,我可能只是遗漏了一些明显的东西......

我通常熟悉分离 UI 和业务逻辑的概念(例如,我在构建 Perl 应用程序时使用HTML::TemplateandClass::DBICGI::Application),但我不确定我在 Java 中“做对了”......

提前致谢!

哦,在我尝试过代码的两个环境中,我得到了完全相同的行为:Mac OS X 10.6.8 上的 javac 1.6.0_29 ("Snow Leopard");以及 Fedora 15 Linux 发行版、内核 2.6.31.10-3、LXDE 桌面环境上的 javac 1.7.0_02[1]。

[1] 直接从oracle.com下载;我没有使用 OpenJDK(我知道 JDK 7 基于 OpenJDK)或 gcj 或类似的东西

0 投票
2 回答
1034 浏览

java - 使用 Swing 时的执行流程

我刚刚开始掌握java中的GUI编程。这是一个琐碎的程序(来自 O'Reilly 的“Head First Java”),表面上看起来很容易理解,但它有一个方面我不理解。

这个简单的程序在编译并运行后会打开一个带有按钮的窗口。

我不明白执行流程发生了什么。当我运行这个程序时,Test类的静态main方法运行,里面的所有命令main()都被执行了——那么为什么窗口出现后进程没有终止呢?为什么我仍然坐在看起来像无限循环的地方?什么是循环?

如果我添加该行

然后我发现结果更加难以理解。现在,当然,一旦我关闭了窗口,程序就会终止。但我又不明白为什么。框架将在堆栈上,但我看不到程序流在哪里,并且堆栈上的某些东西的存在不足以使程序保持活力,肯定吗?我错过了一些基本的东西,据我所知,我正在阅读的书中没有涵盖这些内容。我对此感到有些惊讶——到目前为止,“Head first Java”在指出细微之处和解释真正发生的事情方面做得非常好,但似乎没有解决这一点(至少我没有发现)。