jf 是一个 JFrame 我试图每 200 毫秒移动一个像素。我创建了这个方法,所以我可以在继续之前暂停软件 200 毫秒。millis 和 millisn 是静态多头。
public static void waitsec() {
millis =System.currentTimeMillis();
millisn =System.currentTimeMillis();
while (millisn<(millis+200)){
millisn=System.currentTimeMillis();
}
}
以下部分是我试图让我的 JPanel (jp) 在按下按钮时缓慢移动 50 像素的部分:
public void actionPerformed(ActionEvent h){
if (h.getSource() == button){
for (int i = 0; i <50; ++i){
waitsec();
out.println ("" + i);//I'm checkinf if the waitsec() is working OK
x +=1;
jp.setLocation(x, 0);
totalGUI.repaint();
jp.setVisible(true);//setting visible so I could focus on it
jp.requestFocusInWindow (); //suspicious part
jp.requestFocus ();
}}
}
运行该程序的结果是: 数字在控制台中一个接一个地出现,它们之间的间隔是 200 mmillis,正如预期的那样。一旦数字停止出现(程序运行完毕),JPanel 就不会一直移动。如果我尝试最小化和最大化窗口,它不会显示,直到程序完成运行,就好像程序根本没有焦点一样......为什么它不集中,尽管我已经将它设置为可见并集中它?