2015-12-15 5 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

С вашим текущим кодом ваша программа спит много, даже не заканчивая созданием вашего окна. И прежде всего никогда не отправляйте свой поток графического интерфейса в режим сна, или ваше окно будет спать, пока оно не проснется и не взаимодействует с пользователем.
Чтобы сделать то, что вы хотите, вам нужно запустить еще одну тему, которая будет выполнять движение вашей кнопки.
Итак, возьмите свой цикл 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

Большое спасибо, но теперь другая проблема поднята. Нельзя сделать кнопку невидимой, когда она нажимает 2-ю кнопку. System.err.println ("исключение сна")}. Если (x == 580) {MV.set enabled (false);}. MV.setBounds (x, 220,53,35);} –

+0

try 'mv.setVisible (false);' С помощью setEnable вы указываете только, активна ли кнопка, означает кликабельность или нет. И не забудьте поднять и/или принять мой ответ :) – ArcticLord

+0

Спасибо. Я попытался установить видимый без другого оператора, но не работал. Но теперь работала. В любом случае СПАСИБО много –

Смежные вопросы