是否可以使用SWT在表项目上显示右键菜单?每个项目的菜单都不同,例如某些行,某些菜单项将被启用,而对于其他项目,它们将被禁用.因此,每一行都需要自己的菜单,在设置菜单时我需要一种方法来识别我正在使用哪一行.
有任何想法吗?
解决方法:
按照@ user4793956的建议,收听SWT.MouseDown是完全没用的.总是启动上下文菜单,无需调用setVisible(true).相反,您需要取消SWT.MenuDetect事件,您不希望弹出菜单.
这对我有用:
// Create context menu
Menu menuTable = new Menu(table);
table.setMenu(menuTable);
// Create menu item
MenuItem miTest = new MenuItem(menuTable, SWT.NONE);
miTest.setText("Test Item");
// Do not show menu, when no item is selected
table.addListener(SWT.MenuDetect, new Listener() {
@Override
public void handleEvent(Event event) {
if (table.getSelectionCount() <= 0) {
event.doit = false;
}
}
});
标签:java,swt
来源: https://codeday.me/bug/20190725/1533014.html