jpopupmenu menuitem actionperformed未触发
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jpopupmenu menuitem actionperformed未触发相关的知识,希望对你有一定的参考价值。
popupmenu和menuitem显示正常,但我无法找到原因当我点击menuitem时,没有任何事情发生,甚至没有简单的println。我错过了什么?
这是我的代码:
private void jLabel33MouseReleased(java.awt.event.MouseEvent evt) {
Component source = (Component) evt.getSource();
Component panelSource = source.getParent().getParent().getParent().getParent().getParent();
if (SwingUtilities.isRightMouseButton(evt)){
ModelLigneModifier ligne = (ModelLigneModifier) SwingUtilities.getAncestorOfClass(ModelLigneModifier.class, (Component) evt.getSource());
ligne.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(255, 0, 0), 4));
JPopupMenu menu = new JPopupMenu();
JMenuItem modifier = new JMenuItem("Modifier le prix");
modifier.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Controleur.supprimerLigne(panelSource, ligneCompte);
System.out.println("modifier");
}
});
JMenuItem supprimer = new JMenuItem("Supprimer la ligne");
supprimer.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Controleur.modifierLigne(panelSource, ligneCompte);
System.out.println("modifier");
}
});
menu.add(new JMenuItem("Modifier le prix"));
menu.add(new JMenuItem("Supprimer la ligne"));
//ligne.setComponentPopupMenu(menu);
menu.show(ligne, evt.getX(), evt.getY());
}
else{
Controleur.ajouterLigneCompte(panelSource);
}
}
答案
当我点击menuitem时,没有任何事情发生,甚至没有简单的println。
您创建一个JMenuItem并向其添加一个ActionListener,这是正确的:
JMenuItem modifier = new JMenuItem("Modifier le prix");
modifier.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
Controleur.supprimerLigne(panelSource, ligneCompte);
System.out.println("modifier");
}
});
但是,在弹出菜单中添加一个没有ActionListener的新菜单项,这是不正确的:
menu.add(new JMenuItem("Modifier le prix"));
代码应该是:
//menu.add(new JMenuItem("Modifier le prix"));
menu.add( modifier );
以上是关于jpopupmenu menuitem actionperformed未触发的主要内容,如果未能解决你的问题,请参考以下文章
如何用 JDialog 模仿 JPopupMenu 的行为?
MenuItem.Header和MenuItem.Icon DataTemplate