当前位置: 首页 > 知识库问答 >
问题:

从运行方法/线程返回数据以更新GUI

姜建德
2023-03-14
public static void main(String[] args) {
    final Map map = new SimpleMap();
    try {
        // Set System Look and Feel
        UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    } catch (UnsupportedLookAndFeelException e) {
        // handle exception
    } catch (ClassNotFoundException e) {
        // handle exception
    } catch (InstantiationException e) {
        // handle exception
    } catch (IllegalAccessException e) {
        // handle exception
    }
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                MainFrame frame = new MainFrame(map);
                frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });

    MainThread Main = new MainThread();
    Thread main = new Thread(Main);
    main.start();
}

我有一个主要的方法,它应该从一个乐高机器人的数据绘制一个地图,主线程应该处理它从机器人获得的数据:

public class MainThread implements Runnable {

@Override
public void run() {
    final Map map = new SimpleMap();
    Point pos = new Point(0, 0);
    int[] measured = { 0x40, 0x00, 0x02, 0x13, 0x00, 0x03, 0x23, 0xFF,
            0x30, 0x2E, 0x2D, 0x2E, 0x30, 0x3F, 0x3E, 0x3C, 0x3C, 0x3C,
            0x3D, 0x3D, 0x3F, 0x5E, 0x5F, 0x5F, 0xFE, 0xFF, 0xFF, 0xFF,
            0xFF, 0xFF, 0x6B, 0x69, 0x68, 0x68, 0x69, 0x69, 0x6C, 0xFF,
            0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
            0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
    map.put(new Square(pos, false));
    //
    // System.out.println("measure");
    // int[] measured;
    // try {
    // measured = robot.measure();
    // } catch (CommandErrorException e) {
    // e.printStackTrace();
    // return;
    // }
    map.processMeasureData(measured, pos, Orientation.NORTH);
}

}

如何从线程获取数据来更新GUI?

共有1个答案

危彬彬
2023-03-14

不能从Thread的run方法返回值。您所能做的就是在run中调用另一个方法,并将该值作为参数传递到该方法中,然后执行您想要执行的任何处理。希望对你有帮助。如果没有解决,请再问一遍。

 类似资料:
  • 我有一个从Firebase获取数据的服务。该服务提供了一个可观察的,然后我在组件类中订阅它。当数据被加载并发送到数组时,DOM会更新新数据,但是我需要在DOM更新后再次运行一些javascript和jQuery代码,我不知道如何运行。 我的服务方式是这样的: 和我的组件: 我看了一些RxJS的文档,但是没有用。我想我可以按照他们给出的例子重写它: 但“完成”永远不会开火。 Angular 2的on

  • 问题内容: 我有一个可扩展的Java类,它基本上如下所示: 我需要返回a 或a 的方法。但是,由于它位于的方法中,因此无法将方法的返回类型设置为a 或a 。 该班被称为所谓的OAuth.java类里面。 我如何解决这种情况? 问题答案: 有几种解决此问题的方法: 使用线程外部的数据结构。在线程即将完成时,将对象传递给构造函数,并对其进行更新。 使用回调方法。线程完成后,调用回调。 使用(Java>

  • 问题内容: 我如何获得一个线程以将元组或我选择的任何值返回给Python中的父级? 问题答案: 我建议您在启动线程之前实例化Queue.Queue,并将其作为线程的args之一传递:在线程完成之前,它将结果作为参数接收到的队列中。父母可以或愿意。 队列通常是在Python中安排线程同步和通信的最佳方法:队列本质上是线程安全的消息传递工具,这是组织多任务的最佳方法!

  • 我正在尝试动态更新主线程中的一个android。 不幸的是,我很难从网上的教程中找到任何东西。它们似乎都没有提供线程之间如何通信的完整图片。 我希望避免匿名类,只要有新消息,就动态创建新的。

  • 当我编译并运行StartThreads类时,我会得到一个包含1到1000000的整数列表,其中包含false,最后显示true;现在我想弄清楚的是,为什么threadone类应该打印一次MyVariables类中的实例变量时却什么也不打印?公共类MyVariables{public boolean startApp=false;}

  • 问题内容: 我试图在扭曲的python中结合这两个查询: 和: 进入单个查询。有可能这样做吗? 我尝试将SELECT放在子查询中,但我不认为整个查询都会返回我想要的内容。 有没有办法做到这一点?(甚至更好,没有子查询)还是只需要坚持两个查询? 谢谢, 泉 问题答案: 您不能直接合并这些查询。但是您可以编写一个存储过程来执行两个查询。例: