gpt4 book ai didi

java - Java swing UI线程和事件按钮事件

转载 作者:行者123 更新时间:2023-12-01 19:28:55 24 4
gpt4 key购买 nike

据我了解,所有摆动组件都只能从EDT中创建,修改和查询。
因此,如果我碰巧按下JButton“提交”,那么它将打包来自文本框的所有信息,将该数据发送到控制器,然后控制器会将其发送到其他控制器,最终将这些东西发送到服务器。该按钮的操作正在哪个线程上运行?如果它在EDT上运行,如何退出它以将数据从主线程发送到控制器?我是否应该甚至使用主线程从控制器向服务器发送数据?

所以我的意思是

java.awt.EventQueue.invokeLater(new Runnable()
{
@Override
public void run()
{
JButton button = new JButton("Submit");
button.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
// WHAT THREAD DO ACTIONS HERE RUN ON?
// AND HOW DO I MAKE THEM RUN ON MAIN THREAD?
// AND WHAT THREAD SHOULD I RUN THING ON HERE?
}
});
}
});

最佳答案

Swing触发的任何操作都将在EDT上运行。因此,您的actionPerformed方法中的代码将已经在EDT上执行,而无需您进行任何特殊处理。

要启动长时间运行的任务(例如将数据发送到服务器),请使用SwingWorkerCallableExecutorService

我更喜欢在实现Swing UI时使用SwingWorker,因为它是发布更新并在EDT上自动完成任务时进行回调的有用API。

关于java - Java swing UI线程和事件按钮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59279597/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com