我正在尝试创建一个默认禁用的JMenuItem,但是可以调用一个方法来启用它。就在我测试代码的时候,我希望当我单击另一个菜单项时调用该方法。我已经看过了JMenuItem的文档,但是我还是个新手,很难找到我真正需要的东西。我尝试过使用updateUI()命令,但是没有起作用,所以我完全卡住了。提前感谢您的帮助:)
这就是我到目前为止所知道的:
public class initialScreen extends JFrame implements ActionListener{
Dimension screenSize = new Dimension(800,600);
JMenuItem runE, newP;
public initialScreen(){
super("Experiment Control Suite");
setSize(screenSize);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JMenuBar bar = new JMenuBar();
JMenuItem newP = new JMenuItem("New");
newP.addActionListener(this);
runE = new JMenuItem("Run");
runE.setEnabled(false);
runE.addActionListener(this);
JMenu exp = new JMenu("Experiment");
exp.add(runE);
JMenu par = new JMenu("Participant");
par.add(newP);
bar.add(exp);
bar.add(par);
setJMenuBar(bar);
setVisible(true);
}
public void enableRun(){
runE.setEnabled(true);
runE.updateUI();
}
public void actionPerformed(java.awt.event.ActionEvent e){
if(e.getSource() == newP) {
enableRun();
}
else if(e.getSource() == runE) {
System.out.println("run has been clicked");
}
}}
发布于 2012-01-10 23:10:27
由于以下代码行,您的方法enableRun永远不会被调用:
JMenuItem newP = new JMenuItem("New");相反,就像这样重构它,
newP = new JMenuItem("New");现在,该字段将被正确初始化并注册为ActionListener。因此,在检查源代码时,将调用enableRun并启用菜单项。
请注意,在这种情况下,updateUI是完全不必要的(我建议您阅读javadoc以了解它的用途)。
https://stackoverflow.com/questions/8805349
复制相似问题