gpt4 book ai didi

java - 通过 MenuItem 触发方法

转载 作者:行者123 更新时间:2023-12-02 03:22:53 26 4
gpt4 key购买 nike

我尝试通过单击 MenuItem 来调用方法,因此(基本上)会打开另一个窗口。

我的标准方法是使用这个:

        mntmAbout.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
About.main(null);
}
};

其中mntmAboutMenuItem。但是,这是不可能的,因为 Eclipse 警告我 addActionListener 不是 MenuItem 类型的已知方法。

整个类是通过在 WindowBuilder 中设计 UI 来构建的,所以我猜想此功能需要不同的方法,因为我正在处理 MenuItem 而不是 JMenuItem。 (或者我在这里错过了一些完全不同的东西)

该类的完整源代码:

package kingfisher;

import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.SWT;
import org.eclipse.wb.swt.SWTResourceManager;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import java.awt.event.*;


public class ControlPanel {

protected Shell shell;

/**
* Launch the application.
* @param args
*/
public static void main(String[] args) {
try {
ControlPanel window = new ControlPanel();
window.open();
} catch (Exception e) {
e.printStackTrace();
}
}

/**
* Open the window.
*/
public void open() {
Display display = Display.getDefault();
createContents();
shell.open();
shell.layout();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
}

/**
* Create contents of the window.
*/
protected void createContents() {
shell = new Shell();
shell.setSize(450, 300);
shell.setText("Control Panel");

CLabel lblNewLabel = new CLabel(shell, SWT.NONE);
lblNewLabel.setImage(SWTResourceManager.getImage(ControlPanel.class, "/kingfisher/rsz_1rsz_icon.png"));
lblNewLabel.setBounds(97, 10, 256, 200);
lblNewLabel.setText("");

Label lblNewLabel_1 = new Label(shell, SWT.SHADOW_IN | SWT.CENTER);
lblNewLabel_1.setBounds(194, 216, 61, 17);
lblNewLabel_1.setText("Kingfisher");

Menu menu = new Menu(shell, SWT.BAR);
shell.setMenuBar(menu);

MenuItem mntmControl = new MenuItem(menu, SWT.CASCADE);
mntmControl.setText("Control");

Menu menu_1 = new Menu(mntmControl);
mntmControl.setMenu(menu_1);

MenuItem mntmQuit = new MenuItem(menu_1, SWT.NONE);
mntmQuit.setText("Quit");

MenuItem mntmWindows = new MenuItem(menu, SWT.CASCADE);
mntmWindows.setText("Windows");

Menu menu_2 = new Menu(mntmWindows);
mntmWindows.setMenu(menu_2);

MenuItem mntmChat = new MenuItem(menu_2, SWT.NONE);
mntmChat.setText("Chat");

MenuItem mntmContacts = new MenuItem(menu_2, SWT.NONE);
mntmContacts.setEnabled(false);
mntmContacts.setText("Contacts");

MenuItem mntmSettings = new MenuItem(menu_2, SWT.NONE);
mntmSettings.setEnabled(false);
mntmSettings.setText("Settings");

MenuItem mntmHelp = new MenuItem(menu, SWT.CASCADE);
mntmHelp.setText("Help");

Menu menu_3 = new Menu(mntmHelp);
mntmHelp.setMenu(menu_3);

MenuItem mntmAbout = new MenuItem(menu_3, SWT.NONE);
//HERE BE CODE
mntmAbout.setText("About");

}
}

最佳答案

对于 SWT,您使用 addSelectionListener

mntmAbout.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(final SelectionEvent event)
{
// TODO Your code
}
});

SWT 是一个与 Swing/AWT 完全不同的工具包,并且不使用任何 java.awt 代码。

关于java - 通过 MenuItem 触发方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39393262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com