2014-03-24 47 views
0

我有一個小動畫,其中一個長方形,這是一個藍色背景的jlabel,不斷地沿着屏幕向下移動。我正在運行一個線程來執行此操作。如何在運行動畫時更新jlabel?

現在,我想有另一個jlabel它顯示矩形的當前位置。

public void run() 
{ 
    Pnl.requestFocus(); 


    x = (int) p.getX(); //find location of rectangle 
    y = (int) p.getY(); 

    while (y < 450) 
    { 
     RectangleLabel.setLocation(x, y); //reset location of the rectangle 
     y += 10; 


     try { 
       Thread.sleep(100); 
      } 
     catch (InterruptedException e) 
     { 
      } 
    } 

} 

現在我想在while語句中插入這段代碼。

locationLabel.setText(String.valueOf(450-y)); 

但我每次做的時候,jlable更新,但矩形犯規動吧。

我該怎麼辦?

回答

0

試試這個:

運行這個例子

import javax.swing.*; 
    import java.lang.*; 

class TestThread extends JFrame implements Runnable{ 

JLabel RectangleLabel,locationLabel; 
int x,y=0; 
TestThread() 
{ 
    setVisible(true); 
    setLayout(null); 
    RectangleLabel=new JLabel("Rectangle"); 
    RectangleLabel.setBounds(10,10,100,100); 
    locationLabel=new JLabel(); 
    locationLabel.setBounds(200,200,100,100); 
    add(RectangleLabel); 
    add(locationLabel); 
    setSize(1000,1000); 
    Thread t=new Thread(this); 
    t.run(); 
    } 
    public void run() 
{ 

while (y < 450) 
{ 
    RectangleLabel.setLocation(x, y); //reset location of the rectangle 
    y += 10; 
    locationLabel.setText(""+y); 
    try { 
      Thread.sleep(100); 
     } 
    catch (InterruptedException e) 
    { 
    } 
    if(y==440) 
    { 
     y=0; 
    } 
    } 
} 
public static void main(String args[]) { 

    TestThread t=new TestThread(); 
    } 
} 
+0

還不行。這一次它不再閃爍。它只是呆在那裏 – user3455620