我在eclipse中由windowbuilder创建的run()方法中有计时器。
我不知道如何从另一种方法中停止该计时器。例如,添加
for (i, item) in enumerate(hey, start=1):
print i, item
就在这里,但当我将其更改为false时,它不会改变。它变为false并返回true(我认为)。
我正在更改班级python --version
if(MenuWindow.gameStarted == false) gameTimer.stop();
还有MenuWindow
package krystofee.niggatycoon;
public class MenuWindow {
private static JFrame frame;
static boolean gameStarted;
static GameWindow game;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
MenuWindow window = new MenuWindow();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public MenuWindow() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 450, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
JButton btnNewButton = new JButton("Start");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
GameWindow game = new GameWindow();
game.StartGame();
gameStarted = true;
frame.setVisible(false);
}
});
btnNewButton.setBounds(144, 154, 146, 43);
frame.getContentPane().add(btnNewButton);
}
public static void open() {
frame.setVisible(true);
game = null;
gameStarted = false;
}
}
查看GameWindow
的顶部,我在关闭框架GameWindow后更改了gameStarted的值,并将其更改为false,因此它应该停止计时器......但是......不是。
答案 0 :(得分:1)
你有没有试过让gameStarted变得不稳定?您正在检查另一个线程中的状态,虽然我不知道invokeLater的细节,但您可能会看到gameStarted的过时值。如果这不起作用,您可能在代码中遗漏了一些您可能最有资格发现的内容!
答案 1 :(得分:1)
您是否注意到您在GameWindow
中创建的Runnable
内创建了GameWindow.StartGame()
的另一个实例?