2010-07-06 4 views
1

Я пытаюсь создать кнопку, которая печатает текущее окно браузера.GWT: кнопка печати

Это мой текущий код, который использует (или, по крайней мере, он пытается использовать) JSNI:

private Button print = new Button(constants.print(), new ClickHandler() { 
    @Override 
    public void onClick(final ClickEvent event) { 
     /*-{ 
      if ($wnd.print) { 
       $wnd.print(); 
       return true; 
      } else { 
       return false; 
      } 
     }-*/ 
    }   
}); 

Но когда я нажимаю кнопку, ничего не происходит. Это мое первое приложение GWT, поэтому я не уверен, как его реализовать.

ответ

6
new Button(constants.print(), new ClickHandler() { 
     @Override 
     public void onClick(final ClickEvent event) { 
      print(); 
     } 

     private native boolean print() /*-{ 
      if ($wnd.print) { 
       $wnd.print(); 
       return true; 
      } else { 
       return false; 
      } 
     }-*/; }); 

Должно работать! Всегда размещайте JSNI внутри собственного метода.

+0

Thank you ve много. Оно работает. –

+8

Кстати, я нашел, что вы также можете использовать статический метод Window.print(), предоставляемый GWT, и избегать использования JSNI. –

0

Вот мои 2 цента:

Создать многоразовое класс:

public class PrintHandler implements ClickHandler { 

public void onClick (ClickEvent event) { 
    print(); 
} 

private native boolean print() 
/*-{ 
    if ($wnd.print) { 
     $wnd.print(); 
     return true; 
    } else { 
     return false; 
    } 
}-*/; 
} 

и использовать его в любом месте:

new Button(constants.print(), new PrintHandler()) 
2

С GWT версии 1.5, есть встроенный -впечатать функцию:

import com.google.gwt.user.client.Window 

public class PrintHandler implements ClickHandler { 
    public void onClick (ClickEvent event) { 
      Window.print() 
    } 
} 
Смежные вопросы