【问题标题】:Can i use a single layout manager instance in swing?我可以在 Swing 中使用单个布局管理器实例吗?
【发布时间】:2011-01-29 13:43:13
【问题描述】:

我正在使用 MiGLayout 并且我是个怪胎,我在想是否可以创建一个布局实例并将其用于我的所有面板?只是好奇...

【问题讨论】:

    标签: java swing miglayout


    【解决方案1】:

    这完全取决于布局管理器是否保留与布局相关的数据。通常,任何接受约束的布局管理器都需要存储它们,因此它必须与容器一对一地实例化。

    特别提到 MigLayout,看看它存储了多少不适用于多个容器的数据:

    public final class MigLayout implements LayoutManager2, Externalizable
    {
        // ******** Instance part ********
    
        /** The component to string constraints mappings.
         */
        private final Map<Component, Object> scrConstrMap = new IdentityHashMap<Component, Object>(8);
    
        /** Hold the serializable text representation of the constraints.
         */
        private Object layoutConstraints = "", colConstraints = "", rowConstraints = "";    // Should never be null!
    
        // ******** Transient part ********
    
        private transient ContainerWrapper cacheParentW = null;
    
        private transient final Map<ComponentWrapper, CC> ccMap = new HashMap<ComponentWrapper, CC>(8);
        private transient javax.swing.Timer debugTimer = null;
    
        private transient LC lc = null;
        private transient AC colSpecs = null, rowSpecs = null;
        private transient Grid grid = null;
        private transient int lastModCount = PlatformDefaults.getModCount();
        private transient int lastHash = -1;
        private transient Dimension lastInvalidSize = null;
    
        private transient ArrayList<LayoutCallback> callbackList = null;
    
        private transient boolean dirty = true;
    

    【讨论】:

      【解决方案2】:

      一些布局管理器只能使用一个Container(例如BoxLayout)。我的猜测是,尝试重用相同的布局管理器几乎没有什么好处。

      【讨论】:

        猜你喜欢
        • 2018-05-02
        • 2015-06-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-13
        • 1970-01-01
        • 2011-06-11
        相关资源
        最近更新 更多