我想自动将按钮移向另一个按钮。请帮帮我解决这个我刚刚学会睡眠的方法。可能会出现一些问题
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 :(得分:0)
使用您当前的代码,您的程序会睡眠很多,甚至没有完成创建窗口。首先,永远不要将你的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();