java 设置menu大小_获取Java SWT中Menu控件的大小

import java.lang.reflect.Method;

import org.eclipse.swt.SWT;

import org.eclipse.swt.graphics.Rectangle;

import org.eclipse.swt.layout.GridData;

import org.eclipse.swt.layout.GridLayout;

import org.eclipse.swt.widgets.Composite;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Event;

import org.eclipse.swt.widgets.Listener;

import org.eclipse.swt.widgets.Menu;

import org.eclipse.swt.widgets.MenuItem;

import org.eclipse.swt.widgets.Shell;

public class MenuTest {

public static void main (String [] args)

{

Display display = new Display ();

final Shell shell = new Shell (display);

final Menu bar = new Menu (shell, SWT.BAR);

shell.setMenuBar (bar);

final Composite c = new Composite(shell, SWT.NONE);

c.setLayout(new GridLayout());

c.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,true));

MenuItem fileItem = new MenuItem (bar, SWT.CASCADE);

fileItem.setText (\"&File\");

Menu submenu = new Menu (shell, SWT.DROP_DOWN);

fileItem.setMenu (submenu);

MenuItem item = new MenuItem (submenu, SWT.PUSH);

item.addListener (SWT.Selection, new Listener () {

public void handleEvent (Event e) {

System.out.println(shell.getSize().y - shell.getClientArea().height);

System.out.println(getMenuHeight(bar));

}

});

item.setText (\"Select &All\\tCtrl+A\");

item.setAccelerator (SWT.MOD1 + \'A\');

shell.setSize (200, 200);

shell.open ();

while (!shell.isDisposed()) {

if (!display.readAndDispatch ()) display.sleep ();

}

display.dispose ();

}

static int getMenuHeight(Menu parent)

{

try {

Method m = Menu.class.getDeclaredMethod(\"getBounds\", null);

m.setAccessible(true);

Rectangle r = (Rectangle) m.invoke(parent, null);

return r.height;

} catch (Exception e) {

e.printStackTrace();

return 0;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值