EDITTED POST動作しません:タイマー遅延が適切に
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Examp{
JFrame field;
JPanel squares[][] = new JPanel[10][6];
public Examp(){
field = new JFrame("Football Game");
field.setSize(600, 800);
field.setLayout(new GridLayout(10, 6));
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 6; j++)
{
squares[i][j] = new JPanel();
if (j == 2 || j == 3)
{
if (i == 0)
squares[i][j].setBackground(Color.RED);
else if (i == 9)
squares[i][j].setBackground(Color.BLUE);
else
squares[i][j].setBackground(Color.GREEN);
}
else
{
squares[i][j].setBackground(Color.GREEN);
}
field.add(squares[i][j]);
}
}
field.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
field.setVisible(true);
}
public void place(int i,int j){
ImageIcon ballIcon = new ImageIcon("C:\\Users\\Pamvotis\\Desktop\\Project\\img\\icon.png");
JLabel ball = new JLabel(ballIcon);
squares[i][j].add(ball);
field.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
field.setVisible(true);
}
public void clear(){
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 6; j++)
{
squares[i][j].removeAll();
}
}
field.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
field.setVisible(true);
}
public static void main(String[] args){
Examp football = new Examp();
football.place(2,3);
Timer timer = new Timer(1000, new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
football.clear();
System.out.println("happened");
}
});
timer.setRepeats(false);
timer.start();
}
}
だから私は編集して、あなたは私が前に約謝罪良く求めていますかを理解できるように、コードを簡素化することを試みました。
基本的には、1秒後にすべてのアイコンからフィールドをクリアすることです(私はフットボールの試合をしたいので、これを使って、丸めて新しい位置を追加する)。私の問題は、メソッドclear()がTimerにあるときに実行されないように見えるということです(それを外で実行するとうまく実行されます)。私のSystem.out.println(...)は、適切な遅延でタイマーで正常に実行されます。したがって、問題が何であるか実際にはわかりません。誰でも助けてくれますか?
? – DarkV1
アクションはいつ解雇されますか?または一定の時間に達したら? – DarkV1
より良いヘルプを得るには、有効な[mcve]を作成して投稿してください。投稿する前にリンクをお読みください。 –