在Java SWT中获取Menu控件的大小

时间:2011-05-15 04:29:29

标签: java swt

如何在Java SWT shell窗口中获取菜单栏控件的高度?

似乎不同的操作系统在shell窗口顶部的菜单栏有不同的高度。因此,如果我能够获得菜单栏的确切高度,那将会很棒。菜单API没有getSize()。

2 个答案:

答案 0 :(得分:3)

您可以使用/*public*/ Rectangle getBounds ()的{​​{1}}。但问题是该方法具有默认可访问性。它的签名表明它曾经是史前时期的org.eclipse.swt.widgets.Menu。无论如何,可以有很多方法来解决你的问题:

  1. 查找public减去 height of the shellheight of title area。问题是 height of client area
  2. 第二种方式与第一种方式一样扭曲。 在java how to find the title area height?的帮助下使用上述API。有关详细信息,请参阅以下代码。特别是 Reflection 方法。
  3. static int getMenuHeight(Menu parent) Note:参数应为最高可见菜单实例。因为,在某些操作系统上,隐藏的子菜单是即时创建的。此外,API在Vista机器上进行测试,使用SUN JDK 1.6_b18运行eclipse 3.62。

    <强> Menu

    >>Code:

答案 1 :(得分:-2)

要获得此功能,您将获得菜单栏和标题栏的高度,并减去标题栏的高度。

int menuTitleHeight = x.getWindow().getHeight() - x.getWindow().getContentPane().getHeight();
int titleHeight = x.getWindow().getHeight() - x.getWindow().getRootPane().getHeight();
int menuHeight = x.getWindow().getHeight() - x.getWindow().getRootPane().getHeight();