java jpanel 叠加_java – 在一个JFrame中同时处理两个JPanel

这篇博客讲述了如何在Java Swing中使用JPanel和多线程实现两个球体同时在JFrame中沿不同方向移动。作者遇到了问题,发现不能同时看到两个球移动,并怀疑是JFrame只允许处理一个JPanel。解决方案是使用一个包含所有球体数据结构的列表,并在paintComponent方法中进行绘制,而不是为每个球体创建单独的线程。建议使用Swing Timer代替线程,并确保在事件调度线程上运行Swing应用程序。
摘要由CSDN通过智能技术生成

我是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

for(int i=oldX;i

System.out.println("hii123");

changeX = i;

try {

Thread.sleep(10);

} catch (InterruptedException e) {

e.printStackTrace();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值