1

私はvaadinフレームワークが初めてです。vaadin コンポーネントのボタンをクリックすると、埋め込まれたページを更新しようとしています。

Refresher アドオンを使用できることがわかりましたが、その使用方法に戸惑っています。

助言がありますか ?

4

2 に答える 2

4

また、更新アドオンを使用することをお勧めします。アプリケーションにも使用していますが、完璧に機能しています。

ちょっとした例として:

//Create the Refresher
final Refresher refresher = new Refresher();
//time period in ms when the Refresher shell call the attached listener
refresher.setRefreshInterval(5000); 
//listener that gets called every 5000ms in this example
refresher.addListener(new MyRefresherListener()); 
//add the Refresher component to your layout
myLayout.addComponent(refresher); 

リスナーの実装は次のようになります。

import com.github.wolfie.refresher.Refresher;
import com.github.wolfie.refresher.Refresher.RefreshListener;

public class MyRefreshListener implements RefreshListener {
    private static final long serialVersionUID = 1L;

    @Override
    public void refresh(final Refresher source) {
        System.out.println("I am getting refreshed");
        // add the refresh page of your application logic here
        // e.g. the same code you use for changing views when a button click is happening
    }
}
于 2012-08-19T14:20:12.307 に答える
0

レイアウトにリフレッシャーを追加する際に問題が発生しました

タイプ AbstractOrderedLayout のメソッド addComponent(Component) は、引数に適用できません (リフレッシャー)

これが私が使用したコードの例です:

public class RefresherDemo extends UI  {
    Refresher refresher;
    Label timeLabel;    

    protected void init(VaadinRequest request) {
        final VerticalLayout layout = new VerticalLayout();
        layout.setMargin(true);
        setContent(layout);

        timeLabel = new Label(getTime());

        refresher = new Refresher();
        refresher.setRefreshInterval(500);
        refresher.addListener(new RefreshListener(){
            @Override
            public void refresh(Refresher source) {
                timeLabel.setValue(getTime());
            }
        });
        addExtension(refresher);        

        layout.addComponent(timeLabel);

    }

    public String getTime(){
        DateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
        Date date = new Date();
        String d = dateFormat.format(date);
        return d;
    }

}
于 2013-03-01T08:25:04.237 に答える