java为什么我的组件彼此相邻?
我目前正在尝试创建一个程序,用键盘键在背景图像上移动一个矩形。我面临的问题是,当我绘制组件时,它们只是相邻放置,而不是覆盖在背景图像上的正方形。下面是显示这两个组件的代码
JLayeredPane panel = new JLayeredPane();
panel.setLayout(new FlowLayout());
add(panel);
paintBackground pb = new paintBackground(bimg);
panel.add(pb, 1, 0);
paintPlayer cc = new paintPlayer(startX, startY);
panel.add(cc, 2, 0);
pack();
setVisible(true);
我认为问题在于paintPlayer组件设置为全尺寸,而且似乎有背景。paintPlayer组件代码如下所示:
public Dimension getMinimumSize() {
return new Dimension(800,600);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(800,600);
}
@Override
public Dimension getMaximumSize() {
return new Dimension(800,600);
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.red);
System.out.println(startX + startY );
g.fillRect(startX, startY, 30, 30);
}
我尝试过将组件大小设置为矩形的大小,但这样我就无法通过使用fillRect中的前两个值来移动矩形。由组件(800x600)填充的其余空间的背景似乎是不透明的
添加时,组件只是彼此相邻显示,如下所示:https://gyazo.com/57245c518e02778c36ffc89ba75d5a81。如何将paintPlayer添加到paintBackground的顶部,使其仅覆盖背景图像上的矩形
我找了不少,但似乎找不出来。也许和布局有关?我注意到的另一件事是,通过这样做,框架或窗格都不会从挫折中受益,因为它不可见。 为任何帮助干杯
# 1 楼答案
这是JLayerdPane的默认构造函数
你看,它使用正常的绝对布局。如果你读到here:
你应该明白什么是错的。勾选OverlapLayout