2008-12-20 5 views

ответ

2

Я согласен с rustyshelf по принципу поиска Google, но так как StackOverflow является а также более подробный ответ:

По умолчанию LazyPanel не отображается. Только когда setVisible (true) вызывается в LazyPanel, создается основной виджет.

Этот класс в первую очередь должен использоваться совместно с StackPanel, DisclosurePanel и TabPanel, когда дочерние панели содержат относительно тяжелый вес.
Использование LazyPanel, чтобы обернуть создание этих содержимого, может значительно улучшить работу пользователя.


Using the LazyPanel is simple. Все, что вам нужно сделать, это добавить виджет, который вы хотите лениво загружать в ленивую панель, а затем вызвать setVisible (true) на ленивой панели, чтобы на самом деле иметь загрузку виджета по требованию. Стоит отметить, что LazyPanel в основном предназначен для использования с такими виджетами, как TabPanel и StackPanel, и не идеален во всех случаях.

+0

Не могу спорить с кем-то с рейтингом выше, чем у тебя, я снимаю шляпу перед вами, сэр;) – rustyshelf

0

Здесь находится LazyPanel.java из «кандидат на выпуск» GWT 1.6.2 Итак, да, просто и подтверждение ответа выше.

/* 
* Copyright 2008 Google Inc. 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); you may not 
* use this file except in compliance with the License. You may obtain a copy of 
* the License at 
* 
* http://www.apache.org/licenses/LICENSE-2.0 
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 
* License for the specific language governing permissions and limitations under 
* the License. 
*/ 

package com.google.gwt.user.client.ui; 

/** 
* Convenience class to help lazy loading. The bulk of a LazyPanel is not 
* instantiated until {@link #setVisible}(true) or {@link #ensureWidget} is 
* called. 
* <p> 
* <h3>Example</h3> {@example com.google.gwt.examples.LazyPanelExample} 
*/ 
public abstract class LazyPanel extends SimplePanel { 

    public LazyPanel() { 
    } 

    /** 
    * Create the widget contained within the {@link LazyPanel}. 
    * 
    * @return the lazy widget 
    */ 
    protected abstract Widget createWidget(); 

    /** 
    * Ensures that the widget has been created by calling {@link #createWidget} 
    * if {@link #getWidget} returns <code>null</code>. Typically it is not 
    * necessary to call this directly, as it is called as a side effect of a 
    * <code>setVisible(true)</code> call. 
    */ 
    public void ensureWidget() { 
    Widget widget = getWidget(); 
    if (widget == null) { 
     widget = createWidget(); 
     setWidget(widget); 
    } 
    } 

    @Override 
    /* 
    * Sets whether this object is visible. If <code>visible</code> is 
    * <code>true</code>, creates the sole child widget if necessary by calling 
    * {@link #ensureWidget}. 
    * 
    * @param visible <code>true</code> to show the object, <code>false</code> to 
    * hide it 
    */ 
    public void setVisible(boolean visible) { 
    if (visible) { 
     ensureWidget(); 
    } 
    super.setVisible(visible); 
    } 
} 
+0

LazyPanel включен в релиз 1.6, из которых 1.6.4 был первый «официальный» релиз версия. –

Смежные вопросы