JFrame中的线程问题

时间:2017-06-25 19:31:57

标签: java swing

这是一个小任务。一个JFrame程序必须编写,当你单击一个按钮时,同一个面板中的另一个按钮; y.in button.setBound(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);
  }
}

1 个答案:

答案 0 :(得分:0)

由于我无法看到您的所有代码,我只能猜测。你正在使用什么LayoutManager?它是一个空布局吗?否则,setBounds方法最终可能无法正常工作。

如果你有一个空布局(应该做什么绝对定位),当jumper已经可见时,你可能需要在调用setBounds()之后重新绘制jumper的父组件。为此,请尝试以下操作:

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