gpt4 book ai didi

java - 仅给出与 JMenuItem 关联的字符串,是否可以从 JMenu 中删除 JMenuItem

转载 作者:行者123 更新时间:2023-12-02 06:39:15 27 4
gpt4 key购买 nike

我有一个 JMenu,其中填充有来自具有监听器的数据库中的 JMenuItems,其中之一是从数据库中删除条目(如果选择)。发生这种情况时,JMenuItem 应该从菜单中消失。这是一个简短的例子

for (final Racer r : Racer.getAllRacers()) {
JMenuItem j = new JMenuItem(r.getName());
racerDelete.add(j);
j.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int reply = JOptionPane.showConfirmDialog(null,
"Are you sure you want to delete racer " + r.getName() + "?", "Delete?",
JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION){
r.delete();
racerDelete.remove(???);
}

}
});
}

那么我可以用什么来代替“???”呢? r 的字段几乎是我识别 JMenuItem 所需的全部内容。我已经尝试过 racerDelete.remove(j) ,但它不起作用,我不知道为什么。

最佳答案

诀窍是阅读错误消息,该消息可能会说“变量 j 必须声明为 Final 才能在匿名类中使用”。将代码更改为

    final JMenuItem j = new JMenuItem(r.getName());
racerDelete.add(j);
j.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int reply = JOptionPane.showConfirmDialog(null,
"Are you sure you want to delete racer " + r.getName() + "?", "Delete?",
JOptionPane.YES_NO_OPTION);
if (reply == JOptionPane.YES_OPTION){
r.delete();
racerDelete.remove(j);
}

}
});

关于java - 仅给出与 JMenuItem 关联的字符串,是否可以从 JMenu 中删除 JMenuItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19326806/

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