Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 画布在AWT中有什么用途?_Java_Swing_Jpanel_Awt_Java 2d - Fatal编程技术网

Java 画布在AWT中有什么用途?

Java 画布在AWT中有什么用途?,java,swing,jpanel,awt,java-2d,Java,Swing,Jpanel,Awt,Java 2d,我已经搜索了很多资料,但仍然找不到一个像样的解释。我为什么要使用它,它的目的是什么,为什么它不同于JPanels等等 根据我的理解,Canvas只是Swing JComponent的AWT版本。你不应该直接使用它,除非你是在制作一个纯AWT应用 Canvas的特点是,与Window一样,它可以提供定制的硬件加速双缓冲和页面翻转。看 画布基本上是用来画画的。它还像一个面板,用于创建自定义的基于AWT的组件,但与面板不同,它不能包含其他组件 public class Canvas extends C

我已经搜索了很多资料,但仍然找不到一个像样的解释。我为什么要使用它,它的目的是什么,为什么它不同于JPanels等等

根据我的理解,
Canvas
只是Swing JComponent的AWT版本。你不应该直接使用它,除非你是在制作一个纯AWT应用

Canvas的特点是,与Window一样,它可以提供定制的硬件加速双缓冲和页面翻转。看

画布基本上是用来画画的。它还像一个面板,用于创建自定义的基于AWT的组件,但与面板不同,它不能包含其他组件

public class Canvas
extends Component
implements Accessible
画布组件表示屏幕的一个空白矩形区域,应用程序可以在该区域上绘制,或者应用程序可以从中捕获来自用户的输入事件。 应用程序必须对Canvas类进行子类化,以便获得有用的功能,例如创建自定义组件。必须重写paint方法才能在画布上执行自定义图形


画布基本上是用来画画的。它也像一个面板,用于创建自定义的基于AWT的组件,但与面板不同,它不能包含其他组件。

我在回答中链接的问题是,您不应该在Swing应用程序中使用它。你同意吗?@tieTYT:Canvas在Swing应用程序中可能不太有用,因为Swing提供了自己的双缓冲。(传递给paintComponent方法的图形对象将绘制到一个BuffereImage上,稍后将其显示到屏幕上。)还有一个问题,即Swing组件不能在AWT组件之前分层。Swing菜单和工具提示通常也无法在画布上绘制,但您可以使用JPOppMenu.setDefaultLightWeightPopupEnabled和ToolipManager.setLightWeightPopupEnabled来修复此问题。除此之外,如果您愿意,您当然可以在Swing中使用Canvas。