尺寸对象优势&缺点是什么?

时间:2013-12-30 22:47:48

标签: java swing canvas jframe

使用JFrame时,我注意到有些人花时间做了

 setSize(new Dimension(400,400));

而不是简单

setSize(400,400);

如果不将对象存储在变量中,使用先验而不是后者是否有任何特别的优势?

另外,我不能直接在JFrame画画吗?我需要一块帆布吗?是否最好扩展Canvas?没有JComponent替代Canvas

1 个答案:

答案 0 :(得分:4)

  

使用JFrame时,我注意到有些人花时间做了

setSize(new Dimension(400,400));
     

而不是简单

setSize(400,400);
     

使用先验而不是使用先验是否有任何特别的优势   后者如果不将对象存储在变量中?

没有。基本上它只是一种纵容,所以你不需要做像...这样的事情。

Dimension dim = new Dimension(400, 400);
setSize(dim.width, dim.height);

你可以做到

setSize(dim);

话虽如此,你不应该依赖它,因为pack会产生更好的结果,如果你正确地构建你的基础组件......

  

另外,我不能直接在JFrame中绘图吗?我需要一块帆布吗?

一般来说,不,你不应该直接画到画框,有许多重要的原因,为什么,JFrame(和其他顶级容器)不是双重缓冲,所以重绘将闪烁,同样,框架装饰在框架内绘制,所以如果你直接在框架上绘画,你冒着在装饰下画画的风险......

例如......

只是因为我再也无法打扰它......

  

最好是扩展Canvas吗?没有Cancast的JComponent替代?

这取决于您的需求。 Canvas是一个重量级的组件,因此将其添加到JFrame可能会导致问题。它也不是双缓冲的,所以你需要实现一个BufferStrategy或者实现你自己的双缓冲......

不,没有Swing替代Canvas,但请记住,Swing组件已经双缓冲(至少从Java 6开始......我认为),通过Direct3D或OpenGL支持硬件加速在哪里......