bobo老师,关于函数执行的问题

来源:2-7 动画基础

qq_无限之光_0

2019-01-19

AlgoVisHelper.setStrokeWidth(g2d, 1);
AlgoVisHelper.setColor(g2d, Color.RED);
for(Circle circle:circles)
{
AlgoVisHelper.strokecircle(g2d, circle.x, circle.y, circle.getR());
}
这段在paintComponent()中的绘制语句是什么时候在main方法中调用的?如果是AlgoFram 类初始化时就调用了,那为什么在后面的另一个线程中还能执行?

写回答

1回答

liuyubobobo

2019-01-19

JPanel内封装了一个线程会在“需要”的时候的调用。什么时候是“需要”的时候比较复杂可以简单理解成每隔一段时间自动调用一次这个调用对用户屏蔽了。用户只需要覆盖这个方法所以是覆盖而不是自动以德一个方法指明它在调用的时候绘制逻辑是怎样的就好了


这就是框架的好处屏蔽掉了底层的机制我们只需要关注业务就好了具体绘制什么。当然了这也是框架的坏处


其实大多数绘制框架都是这样的机制。比如iOS也是如此。不用操心什么时候绘制等底层的系统逻辑问题开发者可以把更多的注意力放在绘制什么上。比如数据库也是如此开发者不用操心如何高速的读取数据只需要关心存出什么数据数据如何组织就好了

0
0

7个经典应用诠释Java算法精髓

课程重应用、重实践、重思维,真正应用于实际工作开发中

1888 学习 · 112 问题

查看课程