2017-06-25 38 views
-1

這是一個很小的賦值。一個JFrame程序必須寫成這樣的形式:當你單擊同一個面板中的另一個按鈕時; button.setBound(x,y,l,b)中的y;會減少100倍,並留在那個位置一段時間,然後回到原來的位置。 現在問題出現了,當我按下按鈕時,另一個按鈕跳轉,但並非總是如此。在某些點擊中,它不會完全跳躍 - 這是任意發生的。JFrame中的線程問題

什麼是我的代碼可能丟失? PS-JFrame是使用eclipse中的拖放調色板創建的,因此大多數代碼都是自動生成的。

int jy=325,jx=214; 
int x=325; 
int o1x=403,o1y=359;//global in class 

public void run() 
{ 
    int xo1=o1x; 
    while(true) 
    { 
    action.addMouseListener(new MouseAdapter() { 
     @Override 
     public void mouseClicked(MouseEvent arg0) 
     {   
      jumper.setBounds(jx, jy-100, 23, 70); 
     } 
    }); 


    try{sleep(750);}catch(Exception e){} 

    jumper.setBounds(jx, jy, 23, 70); 
    xo1=xo1-50; 

    if(xo1<=100) 
    { 
     xo1=o1x; 
    } 

    obs1.setBounds(xo1, o1y, 12, 35); 
    } 
} 
+0

請問您能顯示一些相關的代碼嗎? –

+0

看看[問] – pvg

+0

@Florian S. -have添加了你的類推薦和細讀的代碼。:-) –

回答

0

因爲我看不到你所有的代碼,我只能猜測。什麼是您使用的LayoutManager?它是一個空佈局?否則setBounds方法可能最終不會真正起作用。

如果您有一個空佈局(應該做什麼絕對定位),當jumper已經可見時,您可能需要在調用setBounds()後重新繪製父組件jumper。要這樣做,請嘗試以下操作:

parent.revalidate(); 
parent.repaint(); 
+0

-yes佈局管理器是空佈局 - 但我仍然沒有看到你的觀點... –