【问题标题】: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)

【问题讨论】:

    标签: java swing awt actionlistener


    【解决方案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);
    

    注意,不需要设置动作命令。它将默认为菜单项的文本。

    【讨论】:

      猜你喜欢
      • 2017-11-11
      • 1970-01-01
      • 2015-09-23
      • 2011-06-19
      • 1970-01-01
      • 2012-01-11
      • 1970-01-01
      • 2011-05-05
      • 2011-04-04
      相关资源
      最近更新 更多