【问题标题】:Java: How to generate an event from a socket readline()?Java:如何从套接字 readline() 生成事件?
【发布时间】:2014-03-24 16:12:05
【问题描述】:

我有来自 tcp 套接字的消息(线路)(来自 CAN 网关的消息)。在选定的消息上,在选择和解析之后,我想更新一个摆动 GUI 表单(例如在 Netbeans 中生成)。

我读到swing更新必须由事件处理程序驱动,有很多例子,但它们是基于按钮按下、滑块变化等,而不是传入的套接字数据(或串行端口)。看来我需要处理套接字的“readline”生成一个事件,但是我没有找到示例,并且考虑到它必须是一个常见问题,也许我走错了轨道,可能是更简单的选择。

【问题讨论】:

    标签: java swing sockets


    【解决方案1】:

    使用SwingUtilities.invokeLater() 在swing 事件线程上运行任意代码。例如:

        String stuff = socket.readLine();
        if (myStuff(stuff)) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    // do any updates to swing ui here
                }
            });
        }
    

    【讨论】:

    • 因此,据我了解,“// 执行任何更新...”中的代码排队等待在 swing 事件调度线程中运行。假设更新向某个图表发送了一个值,但是在图表完成更新之前有一个新的套接字线和结果值。紧随其后的“运行”是否确实在 EDT 队列中,并且更新将在第一个完成后立即开始?
    • @user3304253:是的,所有事件都已排队
    猜你喜欢
    • 2014-08-26
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-13
    • 2016-08-12
    • 1970-01-01
    相关资源
    最近更新 更多