2013-12-14 52 views
0

如果我要一遍又一遍執行上的按鈕的ActionListener,所以它不會給我再同ANS我應該怎麼做?我將如何在同一個課堂上一次又一次地對同一件事物執行actionListener?

例如:

down = new JButton("DOWN-1"); 
down.setSize(down.getPreferredSize()); 
down.setLocation(100,200); 
down.addActionListener(this); 
left=new JButton("LEFT-1"); 
left.setSize(left.getPreferredSize()); 
left.setLocation(100,250); 
left.addActionListener(this); 
right=new JButton("RIGHT-1"); 
right.setSize(right.getPreferredSize()); 
right.setLocation(100,300); 
right.addActionListener(this); 
up1=new JButton("UP-2"); 
up1.setSize(up1.getPreferredSize()); 
up1.setLocation(550,150); 
up.addActionListener(this); 

@Override 
public void actionPerformed(ActionEvent a) 
{ 
    int counter=370; 

    if (a.getSource()==up) { 
     System.out.println(counter); 

     x=250+62+62; 
     y=60+62+62+62+62+62; 
     b1.setLocation(x,counter-62); 
     l19.setLocation(x,counter); 
    } 
} 

在這我想一次又一次地使用按鈕,但它不工作...

+1

你的問題還不清楚。你也不會執行一個監聽器,當有事情發生時調用這個監聽器。 – zapl

+0

哦,哇,我不小心刪除了我的評論,但這裏的問題:'up.addActionListener(this);'應該''up1.addActionListener(this);' – iWumbo

+0

我知道....但我想再次執行它,再.... .... zapl –

回答

0

雖然你的問題是Sooo很混亂。我想我已經能夠提取出的一些的含義。 「...如果我想一次又一次地在按鈕上執行ActionListener,...」。我的猜測是你的意思是你想要多次使用按鈕。

這就是我在你的代碼中看到的會讓你認爲你不能多次使用它。

@Override 
public void actionPerformed(ActionEvent a) 
{ 
    int counter=370; 

    if (a.getSource()==up) { 
     System.out.println(counter); 

     x=250+62+62; 
     y=60+62+62+62+62+62; 
     b1.setLocation(x,counter-62); 
     l19.setLocation(x,counter); 
    } 
} 

發生了什麼事是有史以來點擊按鈕,位置是總是設置爲同一個地方。我的初始位置不同,這就是爲什麼它似乎在第一次點擊(該位置會改變)。但在此之後,每次點擊都會導致相同的位置,所以無論您期望如何移動,都不會。

雖然我不知道你的代碼是幹什麼的,但是從最小的「解釋」(如果你甚至可以稱之爲)。我可以提出一個建議。看起來counter是抵消因素,所以你可能想要做的就是給counter一個全局範圍,並在每次按鈕被點擊時改變它的值。像這樣的東西

int counter = 370; 

@Override 
public void actionPerformed(ActionEvent a) 
{ 
    if (a.getSource()==up) { 
     counter -= 62;   // this is where you change the value of counter 

     System.out.println(counter); 

     x=250+62+62;   // I have no idea what this is for 
     y=60+62+62+62+62+62; // or this, so I won't comment 
     b1.setLocation(x,counter); // just use the new counter value 
     l19.setLocation(x,counter); 
    } 
} 
相關問題