为啥我的 Action 事件没有被触发?
Posted
技术标签:
【中文标题】为啥我的 Action 事件没有被触发?【英文标题】:why does my Action event is not being triggered?为什么我的 Action 事件没有被触发? 【发布时间】:2021-01-18 23:06:07 【问题描述】:我正在尝试构建一个简单的记事本。但由于某种原因,我的操作事件在单击 New 菜单项后没有被触发。当用户点击 New 菜单项时,下面给出的代码应该调用 newFile() 方法。
public class MainUi implements ActionListener
//all the variables
public JFrame window;
public JTextArea textArea;
public JScrollPane scrollPane;
public JMenuBar menuBar;
public JMenu menuFile, menuEdit, menuFormat;
public JMenuItem fNew, fOpen, fSave, fSaveAs, fExit;
//creating instance of all the functional class
File_functions file = new File_functions(this);
//Constructor to build the ui
public MainUi()
createWindow();
createMenuBar();
addFileMenu();
createTextArea();
window.setVisible(true);
public static void main(String[] args)
new MainUi();
//menu bar
public void createMenuBar()
menuBar = new JMenuBar();
window.setJMenuBar(menuBar);
//add file to the menu
menuFile = new JMenu("File");
menuBar.add(menuFile);
//all the file menu
public void addFileMenu()
fNew = new JMenuItem("New");
menuFile.add(fNew);
menuFile.addActionListener(this);
menuFile.setActionCommand("New");
@Override
public void actionPerformed(ActionEvent e)
// TODO Auto-generated method stub
String command = e.getActionCommand();
System.out.print(command);
switch (command)
case "New": file.newFile(); break;
在控制台中也没有在另一个类中显示错误(File_function)。
【问题讨论】:
【参考方案1】: fNew = new JMenuItem("New");
menuFile.add(fNew);
menuFile.addActionListener(this);
ActionListener 需要添加到 JMenuItem:
fNew = new JMenuItem("New");
menuFile.add(fNew);
//menuFile.addActionListener(this);
fNew.addActionListener(this);
注意,不需要设置动作命令。它将默认为菜单项的文本。
【讨论】:
以上是关于为啥我的 Action 事件没有被触发?的主要内容,如果未能解决你的问题,请参考以下文章
android listview上下滑动时为啥不触发点击事件