确定可用的Vaadin屏幕空间和GridLayout

时间:2012-05-31 08:38:31

标签: java awt vaadin layout-manager grid-layout

我正在尝试创建一个Vaadin应用程序,其中VerticalLayout内部的网格占据了大部分屏幕(因此,小标题,大网格,小页脚)。很容易做到。

但是我想计算可用的浏览器区域的大小并将其划分为80x60像素块,因此不同的显示器将具有不同数量的GridLayout单元格。即你的显示器越大,网格中的单元格越多。

我遇到的问题是,在init()时间,我可以获得宽度和高度的WebBrowser信息,我无法使用(并且在API)。我已经尝试了示例代码,但仍然有效地从init调用'attach'。

我可以使用某种类型的监听器(不确定是哪种)来进行网格设置并为所有这些设置添加控件,但这对我来说听起来非常麻烦和麻烦。

所以,问题:

  1. 什么听众会合适?
  2. 是不是只有一种简单的方法来确定可用的屏幕空间?

2 个答案:

答案 0 :(得分:1)

备选方案1

WebBrowser browser = ((WebApplicationContext) getApplication().getContext()).getBrowser();
int width = browser.getScreenWidth();
int height = browser.getScreenHeight();

最佳方式:

getApplication().getMainWindow().addListener(new ResizeListener() {
    @Override
    public void windowResized(ResizeEvent e) {
        System.out.printf("window info : %sx%s\n", 
                         e.getWindow().getWidth(), 
                         e.getWindow().getHeight()));
    }
});

答案 1 :(得分:0)

制作Application工具HttpServletRequestListener,并按如下方式实施回调:

public void onRequestEnd(HttpServletRequest request,
        HttpServletResponse response) {
    WebBrowser browser = ((WebApplicationContext) getContext()).getBrowser();
    int width = browser.getScreenWidth();
    int height = browser.getScreenHeight();
    if(width==0 || width==-1) return;
    if(height==0 || height==-1) return;
    System.out.println("Your browser window is "+width+" by "+height);