Java JFrame中的线程问题

Java JFrame中的线程问题,java,swing,Java,Swing,这是一个很小的任务。一个JFrame程序必须编写成这样,当你点击一个按钮时,同一面板中的另一个按钮;按钮中的y。收束(x,y,l,b);将减少100倍,并在该位置停留一段时间,然后返回其原始位置。 现在的问题是,当我按下按钮时,另一个按钮会跳起来,但并不总是这样。在一些点击中,它不会完全跳跃——这是任意发生的 我的代码可能丢失了什么? PS JFrame是在eclipse中使用拖放调色板创建的,因此大部分代码是自动生成的 int jy=325,jx=214; int x=325; int o1x

这是一个很小的任务。一个JFrame程序必须编写成这样,当你点击一个按钮时,同一面板中的另一个按钮;按钮中的y。收束(x,y,l,b);将减少100倍,并在该位置停留一段时间,然后返回其原始位置。 现在的问题是,当我按下按钮时,另一个按钮会跳起来,但并不总是这样。在一些点击中,它不会完全跳跃——这是任意发生的

我的代码可能丢失了什么? 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);
  }
}
intjy=325,jx=214;
int x=325;
int o1x=403,o1y=359//全班
公开募捐
{
int xo1=o1x;
while(true)
{
action.addMouseListener(新的MouseAdapter(){
@凌驾
公共无效鼠标单击(鼠标事件arg0)
{           
跳线.立根(jx,jy-100,23,70);
}
});
试试{sleep(750);}catch(异常e){}
跳线.立根(jx,jy,23,70);
xo1=xo1-50;

如果(xo1因为我看不到你所有的代码,我只能猜测。你正在使用的LayoutManager是什么?它是一个空布局吗?否则,
setBounds
方法最终可能无法真正工作

如果布局为空(绝对定位时应执行的操作),则在调用
setBounds()
后,当
jumper
已可见时,可能需要重新绘制
jumper
的父组件。要执行此操作,请尝试以下操作:

parent.revalidate();
parent.repaint();

请您出示一些相关代码好吗?看看@Florian S.-已经添加了代码供您参考和阅读。:-)