【问题标题】:Clearing screen vs drawing on top? [closed]清屏还是在上面画画? [关闭]
【发布时间】:2012-12-03 01:29:20
【问题描述】:

什么是更好的选择? 适用于:Swing 和 AWT

我问这个问题是因为我想知道什么可以节省我更多的时间。

【问题讨论】:

  • 回复。 AWT/摇摆。请参阅this answer(以及问答的其余部分)。
  • 没有明确的更好标准,这个问题不具建设性。作为参考,JMCAD 使用 Swing。

标签: java swing awt bluej


【解决方案1】:

什么是更好的选择?适用于:Swing 和 .awt

对于大多数用途来说,Swing 是一个更加健壮和强大的库。

我问这个问题是因为我想知道什么可以节省我更多的时间。

以什么方式为您节省更多时间?

这个问题的主旨是什么?

编辑
你说:

我正在制作一个 CAD 程序,这就是我需要知道的原因。

我不确定在这一点上我是否会非常担心“清除与绘制顶部”,并且会更担心具有良好分离逻辑实体的整体程序设计。图形细节可以根据您的测试结果进行测试和更改,但更重要的是您拥有强大而灵活的设计,可以让您插入任何类型的图形设计。

【讨论】:

  • 我正在制作一个 CAD 程序,这就是我需要知道的原因。
【解决方案2】:

在所有其他 cmets 之上;

Swing 有一个聪明的重绘管理器,它可以用来只重绘屏幕受损区域,而不是需要重绘整个屏幕。

Swing 也是双缓冲的,这使得它的更新不太容易出现闪烁。

【讨论】:

    【解决方案3】:

    swing 将比 awt 节省更多时间,因为 swing 的所有组件代码都是纯用 java 编写的,而 awt 组件的代码是用非 java 的本地语言编写的,因此 awt 的编译时间比 swing 多。 在节省时间的情况下最好使用 Swing。

    【讨论】:

      【解决方案4】:

      一般来说,清除和重绘是首选方法。尝试在顶部绘图的程序中经常存在视觉错误。

      在顶部绘图的典型用例是消除与难以绘制小部件的程序相关的一些问题(例如具有非常复杂的细节和许多功能的 CAD 程序)。然而,即使在这些情况下,通常也有一些方法可以避免在顶部绘制。例如,将 CPU 密集型小部件绘制到缓冲区,然后在该小部件中没有的内容发生更改时绘制缓冲区。

      【讨论】:

      • 所以,你是说因为程序员的工作很糟糕,难道不是有效的方法吗? :) 我同意,程序员似乎无法正确绘制他们的代码,但这是否足以成为说根本不这样做的理由?
      • @Zagrev 我认为更准确的说法是它变得非常复杂,即使是最优秀的程序员也很难做到正确,并且有简单有效的替代方案(例如缓冲输出)。另外,我不确定这是否与单个程序员的质量和他们编写的文档的质量有很大关系。可能在某些情况下您必须重绘(例如,如果调整了窗口大小或其他情况),但这些情况通常没有很好的文档记录。
      • 我很乐意同意这一点。
      猜你喜欢
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 2014-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多