我最近做了一個小型益智遊戲,處理點擊某些領域。我也做了一個求解器來激活必要的領域來贏得勝利。我面臨的問題是,我想暫停每次激活某個區域以創建一種「解決動畫」的問題。我的問題是在這裏代表如何使一個方法使用擺動,睡眠使用定時器
package experiment;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class ExperimentHere extends JFrame implements ActionListener
{
private static final long serialVersionUID = 1L;
private JButton changeLabelButton;
private JPanel mainPanel;
private JLabel labelToChange;
public ExperimentHere() {
changeLabelButton = new JButton("Set the label");
changeLabelButton.addActionListener(this);
mainPanel = new JPanel();
labelToChange = new JLabel();
labelToChange.setText("This needs to be changed");
mainPanel.add(labelToChange);
mainPanel.add(changeLabelButton);
this.add(mainPanel);
setTitle("Timer Program");
setContentPane(mainPanel);
setPreferredSize(new Dimension(1000, 1000));
pack();
}
public void actionPerformed(ActionEvent e) {
if (e.getSource().equals(changeLabelButton)){
changeLabel();
}
}
public void changeLabel(){
for (int i = 0; i<5; i++){
labelToChange.setText(""+i);
// Pause for 200ms here
}
}
public static void main(String[] args){
ExperimentHere test = new ExperimentHere();
test.setVisible(true);
}
}
我一直在使用定時器試過,但我不知道如何將它正確地格式化,以便它每次只暫停changeLabel()遞增內部的循環,因爲第二放慢參數在Timer()中請求一個ActionListener。 我也試過使用Thread.sleep(),但它只是凍結我的程序,然後立即解決它。
理想情況下,changeLabel方法將增加1,將標籤設置爲新的String,等待200ms,然後再次遞增。
哦,我明白了,我誤解了定時器的使用。如果使用那樣的話,會更有意義。謝謝! – Kazutadashi
@Kazutadashi,很高興它有幫助。不要忘了點擊勾號「接受」答案,以便人們知道問題已經解決。 – camickr