我的Java程序应该通过JButton控制交通灯(另一个类创建的对象)。按下JButton时,应该通过调用交通灯对象的方法,将交通灯从红色循环到绿色,然后从黄色循环回到红色。
交通信号灯对象具有.setGreen();方法。 ,.setYellow(); ,.setRed();和.wait(int毫秒);并通过JFrame直观显示。 默认情况下,启动时将其设置为红色。 如果我尝试通过JButton以外的方法来循环交通信号灯,则该程序就可以正常工作。例如,当使用for循环时,将产生预期的结果。 我当前的方法是在循环方法上调用JButton,该方法将交通灯对象移交给循环方法。在这种方法中,应该实现交通灯周期。 但是,此方法可以正确执行的操作数量似乎受到限制。如果循环方法仅包含两个指令,例如.wait(1000);和.setGreen(); ,则正确产生了预期的输出。 在打包更多有关此方法的说明后,它不再按预期工作。
// component ...
// can error and only serves the purpose of an idea
computed: {
gridData: {
get: function() {
return window.gridData || {}
},
set: function(dataObj){
window.gridData = dataObj
}
}
}
final JButton button_cycle = new JButton("Begin cycle");
frame.add(button_cycle);
ActionListener alcycle= new ActionListener() {
@Override public void actionPerformed( ActionEvent button_cycle) {
{
cycle(myLight);
}
}
};
button_cycle.addActionListener(alcycle);
按下按钮后的预期结果是交通信号灯(默认为红色),等待1秒,切换为绿色,再等待1秒,切换为黄色,再等待1秒,再切换回红色。 运行该程序会导致JFrame中的可视交通灯保持红色3秒钟,并且仅执行最后一个.set操作。如果循环方法中的最后一个操作更改为myLight.setYellow();例如,交通信号灯保持红色3秒钟,然后切换为黄色。