我刚开始使用JMenu。为了方便起见,我决定使用Netbeans表单设计工具,该工具适用于此应用程序中的所有组件。
单击顶级菜单项效果很好。
对于一个菜单项,我创建了一个包含3个项目的子菜单,每个项目都有一个鼠标点击监听器。
以下是3个子菜单之一的相关代码:
private JMenuItem mnuEditDicAddAllScratch;
mnuEditDicAddAllScratch = new JMenuItem();
private void mnuEditDicAddAllScratchMouseClicked(MouseEvent evt) {
new WordsToAdd(); // never happened
}
mnuEditDicAddAllScratch.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
mnuEditDicAddAllScratchMouseClicked(evt);
}
});
mnuEdit.add(mnuEditDicAddAllScratch);
它没有用。点击忽略。
所以我尝试了一个Action侦听器:
private void mnuEditDicAddAllScratchActionPerformed(ActionEvent evt) {
new WordsToAdd(); // WORKED
}
mnuEditDicAddAllScratch.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
mnuEditDicAddAllScratchActionPerformed(evt);
}
});
它有效。
所以问题是,"为什么没有鼠标点击监听器听?"
此外,"如果我应远离鼠标点击事件,为什么或在什么情况下?"
(而且,先发制人的罢工:我应该远离Netbeans表格设计师。)
答案 0 :(得分:1)
您应该使用最好的工具来完成手头的工作。这意味着对于JMenuItems和JButtons,您应该使用ActionListeners,而不是MouseListeners(尽管例外)。例如,如果禁用按钮,则希望按钮不起作用,对吧?这适用于ActionListeners,但不适用于MouseListeners。
有关此类内容的最佳信息,请转到来源:Swing Tutorials。
答案 1 :(得分:-1)
mnuEditDicAddAllScratch.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent actionEvent) {
mnuEditDicAddAllScratchActionPerformed();
}
});