【发布时间】:2011-12-20 13:20:45
【问题描述】:
我有一个 java 应用程序,它可以流式传输原始数据并相应地绘制实时图。这是通过从我编写的使用 Graphics 对象的类中调用方法来处理的。我在重写的paintComponent 方法中实现了算法,以根据最新数据生成所有图。我的类中有其他方法可以更新用于绘制图形的paintComponent 方法中的变量。
在我的主课中,我在计时器事件处理程序中定期更新我的图表。在事件处理程序中,我从我的图形类中调用更新某些变量的方法,进行一些计算,然后调用 repaint() (这显然是调用 paintComponent 方法的正确方法)。
我的问题是,我在 paintComponent 方法中使用的算法可能需要(相对)较长的时间才能完成,具体取决于我的绘图的数量和分辨率。 (我还没有完全遇到这个问题,但我现在正在尝试解决它)。当然,我不希望所有这些图形占用我的应用程序的所有处理时间,所以我想知道是否可以让“paintComponent”在单独的线程中执行。
如果我在我的 main 中创建一个子类以在单独的线程中运行并简单地调用我描述的图形方法会发生什么?这会自动使所有这些方法(包括paintComponent)在新线程中执行吗?还是我必须修改我的图形类本身才能使其工作?理想情况下,我想避免修改我的图形类,因为我已经将它设计为在 NetBeans GUI 构建器中作为 JPanel 工作,并且我想避免破坏该功能。
【问题讨论】:
标签: java multithreading swing graphics netbeans