2015-12-15 239 views
-2

我想將按鈕自動移動到另一個按鈕。請幫我解決這個問題,我剛學過睡眠方法。可能有些問題他們將如何自動將按鈕移動到另一個按鈕?

import javax.swing.*; 
import java.awt.*; 
public class tr extends JFrame 
{ 
public static void main(String []args) 
{ 
JFrame f1=new JFrame("Hit & Run"); 
JPanel p1=new JPanel(); 
JButton mv = new JButton(); 
JButton hit=new JButton("Hit It"); 
f1.getContentPane().add(p1); 
int x; 
for(x=0;x<=600;x++) 
{ try{ 
Thread.sleep(50); 
} 
catch(InterruptedException e) 
{ 
System.err.println("sleep exception"); 
} 
mv.setBounds(x,220,53,35); 
} 
hit.setBounds(680,30,90,500); 
p1.setBackground(Color.black); 

hit.setBackground(Color.green); 
mv.setBackground(new Color(255,204,0)); 
p1.setBackground(Color.black); 
p1.setLayout(null); 
p1.add(mv); 
p1.add(hit); 

f1.setVisible(true); 
f1.setSize(800,600); 
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
} 

回答

0

根據您當前的代碼你PROGRAMM睡了很多,而不是甚至創建窗口完成。首先,不要將GUI線程發送到睡眠狀態,否則窗口會在睡眠狀態下休眠,而應該喚醒並與用戶交互。
要做你想要的,你需要啓動另一個線程來執行你的按鈕的移動。
所以把你的for循環出來的初始化代碼,並在你的最後一行添加以下內容。

new Thread(new Runnable(){ 
    @Override 
    public void run() { 
     int x; 
     for(x=0;x<=600;x++) 
     {   
      try{ 
       Thread.sleep(50); 
      } 
      catch(InterruptedException e) 
      { 
       System.err.println("sleep exception"); 
      } 
      mv.setBounds(x,220,53,35); 
     } 
    } 
}).start(); 
+0

非常感謝,但現在又提出了另一個問題。當按下第二個按鈕時,不能使按鈕不可見。 System.err.println(「睡眠異常」)}。如果(x == 580){MV.set enabled(false);}。 MV.setBounds(x,220,53,35);} –

+0

嘗試'mv.setVisible(false);'用setEnable你只能指定,如果按鈕被激活意味着可點擊或不可以。不要忘記upvote和/或接受我的回答:) – ArcticLord

+0

謝謝。我嘗試設置可見,沒有其他聲明,但沒有工作。但現在工作。無論如何感謝很多 –

相關問題