gpt4 book ai didi

java - 维度对象的优点和缺点?

转载 作者:行者123 更新时间:2023-11-29 03:26:13 25 4
gpt4 key购买 nike

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

 setSize(new Dimension(400,400));

而不是简单地

setSize(400,400);

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

还有,我不能直接在JFrame中绘制吗?我需要 Canvas 吗?扩展 Canvas 是最好的选择吗?没有 JComponent 替代 Canvas 吗?

最佳答案

When using a JFrame, I noticed some people spent their time doing

setSize(new Dimension(400,400));

rather than simply

setSize(400,400);

Are there any particular advantages to using the prior rather than the latter if not storing the object in a variable?

没有。基本上这只是一种纵容,所以你不需要做类似...

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

你可以这样做

setSize(dim);

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

Also, can I not draw directly in JFrame? do I need a canvas for it?

一般来说,不,你不应该直接在框架上绘画,有很多重要的原因,首先,JFrame(和其他顶级容器)不是双缓冲的,所以重绘会闪烁,而且,框架装饰是在框架内绘制的,所以如果你直接在框架上绘制,你就有在装饰下绘制的风险......

例如……

只是因为我懒得再打一遍...

is it simply best to extend Canvas? no JComponent alternative to Canvas?

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

不,没有可以替代 Canvas 的 Swing,但请记住,Swing 组件已经是双缓冲的,并且(至少从 Java 6 开始……我认为)支持硬件加速可用的 Direct3D 或 OpenGL...

关于java - 维度对象的优点和缺点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20848839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com