java - CardLayout性能?

标签 java swing vector jpanel cardlayout

我认为 CardLayout 使用 HashMap 来存储其对(面板和关联的字符串标识符),但是查看 CardLayout 类,我注意到它实际上使用了 Vector。我是这样理解的:当调用 show 方法时,它会循环遍历 vector 的内容,使用 equals 检查以查明这是否是适当卡的名称,如果是,则它会循环遍历容器的所有面板以找出当前可见的面板,将其隐藏,然后显示相应的卡片。

如果我正在制作一个具有很多不同面板的 GUI 应用程序,那么翻转到所需面板不是一种缓慢的技术吗?我是否应该更好地使用自己的方式显示面板,例如将它们存储到数组中并手动使用 add/removesetVisible 而不是使用 CardLayout ?这实际上是我在最终使用 CardLayout 之前一开始使用的方式。

最佳答案

永远不会成为问题:您通常不会非常频繁地在组件之间切换,当您这样做时,扫描具有少量组件(通常是 3-100?)的列表是与必须发生的其他操作(例如绘制新组件)相比,花费的时间可以忽略不计。从性能角度来看,数据结构的选择基本上是无关的 - 您可以使用链接列表,但没有人会注意到。

另请注意,HashMap 不适合 CardLayout,因为它需要保留卡片的顺序,以便您可以first/下一个/上一个等等

所以基本上,不要担心,也不要浪费时间来滚动你自己的 CardLayout 克隆 - CardLayout 工作得很好。

关于java - CardLayout性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12610911/

相关文章:

python - 有效地检查矩形和圆的扇形之间的碰撞

c++ - 纯虚拟类和集合( vector ?)

java - 从 asynctask 在 android Activity 中添加 snackbar

java - 如何将文本从 Activity 传递到 Android 中的 Google Now 搜索

java - 当我的 Java 应用程序运行时禁用 Mac 字符重音菜单

java - 如何使方法的数组可访问

c++ - 使用opencv将像素数据分配到 vector 中

java - 如何在插件中解析 Maven 存储库中的工件?

java - nanoTime 和 currentTimeMillis 在 Mac OS 上有不同的速率

java - 当两个 JPanel 具有绝对布局时,将两个 JPanel 移至 MainFrame 内