работая над двумя JPanels одновременно в одном JFrame

Я новичок в java swing. И при попытке с графикой я застрял с этим. Я не мог найти правильное решение в сети. Так что я думал о публикации здесь.

так что теперь давайте перейдем к моей проблеме. Сначала я объясню, что я пытаюсь сделать. И тогда я объясню о моей проблеме.

Я пытаюсь заставить два шара двигаться в разных направлениях одновременно в JFrame. (По сути, я думал о том, чтобы играть в цепную реакцию, в которой, когда вы нажимаете на заполненную коробку, шары будут двигаться одновременно в разных направлениях).

Здесь я создаю два (на данный момент) JPanels для двух шаров, которые я пытаюсь переместить на JFrame ОДНОВРЕМЕННО.

вот код, который я опробовал,

public class chainGraphics расширяет JPanel реализует Runnable {

int oldX,oldY,newX,newY;
int changeX,changeY;
Container myPane;
public chainGraphics(int oldX,int oldY,int newX,int newY,Container myPane) {
    // TODO Auto-generated constructor stub
    this.myPane=myPane;
    this.oldX=oldX;
    this.oldY=oldY;
    this.newX=newX;
    this.newY=newY;
    myPane.add(this);

}

public void paintComponent(Graphics g) {

    //super.paintComponent(g);
    System.out.println("hj");
    g.drawOval(changeX,changeY, 40, 40);

}


@Override
public void run()   {


    System.out.println("hii");
    changeX =oldX;
    changeY = oldY;

    if((newY-oldY)==0){
        if(oldX<newX){
            for(int i=oldX;i<newX;i++){
                System.out.println("hii123");
                changeX = i;
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {

                    e.printStackTrace();
                }

                repaint();
            }
        }
        else    {
            for(int i=oldX;i>newX;i--){
                changeX=i;
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                repaint();
            }
        }

    }
    if((newX-oldX)==0){
        if(oldY<newY){
            for(int i=oldY;i<newY;i++){
                changeY=i;
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                repaint();
            }
        }
        else    {
            for(int i=oldY;i>newY;i--){
                changeY=i;
                try {
                    Thread.sleep(10);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                repaint();
            }
        }       
    }
}

public static void main(String[] args)  {

    JFrame gui = new JFrame();
    gui.setTitle("Chain Reaction ;-) ");
    gui.setSize(650,650);
    gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    gui.setLocationRelativeTo(null);
    gui.setVisible(true);
    Container Pane = gui.getContentPane();
    chainGraphics g = new chainGraphics(100,200,300,200,Pane);  
            chainGraphics g1 = new chainGraphics(200,100,200,300,Pane); 
    Thread t1 = new Thread(g);
    t1.start();     
    Thread t2 = new Thread(g1);
    t2.start();


    try {
        t1.join();
                    t2.join();      
    } catch (InterruptedException e) {
        e.printStackTrace();
    }

}

}

Здесь я не видел двух движущихся одновременно шаров. Есть проблема, я думаю. я мог видеть шар, движущийся только в направлении у. (но я хочу, чтобы оба шара двигались одновременно, так как я создаю две нити)

И я также заметил, что если я сначала создаю объект g1, а затем объект g, то шар движется только в направлении x.

Я думаю, что Jframe позволяет работать только с 1 JPanel одновременно. (И я добавляю JPanel в конструктор Frame тщательно). так что когда-нибудь JPanel добавляется в последнюю очередь к кадру, это позволяет работать над ним. это так ? Если да, что мне теперь делать. Мое требование - я хочу перемещать шары одновременно в разных направлениях. Благодарю.

Ответы на вопрос(1)

Ваш ответ на вопрос