gpt4 book ai didi

java - JFace ApplicationWindow 菜单栏不显示

转载 作者:太空宇宙 更新时间:2023-11-04 10:16:49 24 4
gpt4 key购买 nike

我使用 JFace 的 ApplicationWindow 创建了一个简单的窗口,并尝试添加菜单栏。

public MainWindow() {
super(null);
this.addMenuBar(); // Enable menu-bar.
}

@Override
protected Control createContents(Composite parent) {
MenuManager menuBar = this.getMenuBarManager();

// Create "File" menu.
MenuManager fileMenu = new MenuManager("&File");
menuBar.add(fileMenu);

// Create "File" > "Test" action.
Action testAction = new Action("&Test") {
@Override
public void run() {
System.out.println("Test");
}
};
fileMenu.add(testAction);

// Create contents.
Label text = new Label(parent, SWT.NONE);
text.setText("Lorem ipsum.");

return parent;
}

我一定是忽略了一些简单的东西,因为它似乎不起作用。菜单栏根本不显示。我究竟做错了什么? (请注意,我在 Ubuntu 中禁用了全局菜单)。

Test Window

注意:我已经在带有 GTK 3.16.7 的 Ubuntu 15.10 和带有 GTK 3.22.18 的 Arch Linux 以及 SWT 3.105.3 和 JFace 3.12.2 上进行了测试。

最佳答案

createContents 中设置菜单栏为时已晚,您需要更早地进行此操作。一种方法是覆盖 createMenuManager:

@Override
protected MenuManager createMenuManager()
{
MenuManager menuBar = new MenuManager();

// Create "File" menu.
MenuManager fileMenu = new MenuManager("File");
menuBar.add(fileMenu);

// Create "File" > "Test" action.
Action testAction = new Action("&Test")
{
@Override
public void run()
{
System.out.println("Test");
}
};
fileMenu.add(testAction);

return menuBar;
}

@Override
protected Control createContents(Composite parent)
{
// Create contents.
Label text = new Label(parent, SWT.NONE);
text.setText("Lorem ipsum.");

return text;
}

关于java - JFace ApplicationWindow 菜单栏不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45774337/

24 4 0