【发布时间】:2016-03-09 16:09:58
【问题描述】:
我正在尝试创建一个简单的动画,让游泳者沿着水下路径前进。我有两个 JPanel - 一个用于游泳者,一个用于背景。两者都处于活动状态,游泳者正在移动四肢,背景有需要更新的鱼/障碍物。
我正在尝试将游泳者置于背景之上。我正在尝试使用 JLayeredPane,所以我创建了两个图层并添加它们:
JLayeredPane lp = frame.getLayeredPane();
lp.setPreferredSize(new Dimension(650, 550));
underwaterScene.setSize(lp.getPreferredSize());
underwaterScene.setLocation(0,0);
swimmer.setSize(lp.getPreferredSize());
swimmer.setLocation(0,0);
swimmer.setOpaque(false);
lp.add(underwaterScene, Integer.valueOf(1));
lp.add(swimmer, Integer.valueOf(2));
游泳者的paintComponent方法只是将游泳者绘制到正确的位置:
g.drawImage(swimmer.sprite, swimmer.x, swimmer.y, 150, 100, null);
目前,我只看到游泳者层。如果我删除 lp.add(swimmer ... 调用,那么我可以看到背景层,所以我知道它正在被添加。
我的问题是:为什么游泳者没有出现在背景之上而没有完全阻挡它?
提前感谢您的帮助!
【问题讨论】:
-
可能不是设置的最佳选择,相反,我会考虑使用自定义绘画方法
标签: java swing animation jlayeredpane