Java 在Swing中添加组件的性能更好的顺序是什么

Java 在Swing中添加组件的性能更好的顺序是什么,java,swing,components,add,Java,Swing,Components,Add,我需要重构我的应用程序,因为我遇到了渲染问题,这可能是由于没有正确使用事件调度线程造成的。为了把事情做好,我试着收集信息。我已经开始了这个关于EDT的帖子: 现在我想知道更多关于嵌套面板的最佳方法 假设我有以下结构: [PanelA[PanelB[PanelC]] 性能更高的是什么(对invalidate()的内部调用更少) 订单1(先是内部部件,然后是外部部件): 订单2(先是外部部件,然后是内部部件): 如果有人也有更多关于如何获得最佳用户界面的信息/链接/提示等,我将不胜感激。大多数教程

我需要重构我的应用程序,因为我遇到了渲染问题,这可能是由于没有正确使用事件调度线程造成的。为了把事情做好,我试着收集信息。我已经开始了这个关于EDT的帖子:

现在我想知道更多关于嵌套面板的最佳方法

假设我有以下结构:

[PanelA[PanelB[PanelC]]

性能更高的是什么(对invalidate()的内部调用更少)

订单1(先是内部部件,然后是外部部件):

订单2(先是外部部件,然后是内部部件):

如果有人也有更多关于如何获得最佳用户界面的信息/链接/提示等,我将不胜感激。大多数教程只是解释基本知识

一个相关问题: 由于所有的JSOCKS都是容器,所以我考虑通过添加一些组件来创建JBAND,比如说JButt。这是一种良好的做法:

JButton b=new JButton();
b.setLayout(new BorderLayout(),BorderLayout.Right);
b.add(new MyComponent());
当我更改组件的布局时,如何知道默认情况下组件使用的布局以及可能发生的情况

非常感谢你的帮助

  • 您不应该担心添加组件的顺序,用户不会注意到差异

  • 一般来说,您不应该担心UI的性能。Swing代码本身将“足够快”。只有从UI启动长时间运行的非UI任务时,性能/响应性才会变得有趣

  • 如果将面板添加到按钮,则会混淆用户。您可以查看组件的源代码以查看其布局管理器(但这很少是必需的)


  • 我认为在性能方面,顺序并不重要。如果使用
    revalidate()
    ,则无所谓。否则,最好开始添加更“嵌套”的面板,因为子组件中的更改可能会导致父容器中的更改,并且无论您选择哪条路径,这都会递归地调用函数,如
    pack()/setVisible()
    。尽管像
    pack()/setVisible()
    这样的调用必须在您将所有内容添加到容器之后进行。但是,如果要将
    组件添加到已可见的
    容器中,则必须使用
    revalidate()/repaint()
    。在
    JButton
    中添加
    组件
    s对我来说看起来很奇怪,但由于我了解到这种情况并不总是微不足道的,正如本文所述,我想你可以做到:-)至于b)-不要。尽管有可能,但错误地使用不打算作为容器的组件会带来痛苦。通常情况下,它们有一个空的layoutManager,其属性(如图标、文本)的布局由ui委托完成,如果设置了,则可能尊重管理者,也可能不尊重管理者——无法预测实际结果。不管怎样,你为什么要这么做?
    PanelA.add(PanelB);
    PanelB.add(PanelC);
    
    JButton b=new JButton();
    b.setLayout(new BorderLayout(),BorderLayout.Right);
    b.add(new MyComponent());