我正在尝试将JPanel
添加到另一个JPanel
,并将其放在第一个JPanel
的特定位置。我正在使用setBounds(x, y, w, h)
执行此操作。现在我知道我不应该这样做,但我需要一种方法来移动它(作为一个动画)。
我遇到的问题是Y不起作用。如果我getBounds()
它被设置为正确的值,但它不会在屏幕上移动。我的Layout
设置为null
。
首先JPanel
:
public WarehousePanel()
{
super(null);
gantries = new Gantry[5];
for (int i = 0; i < gantries.length; i++)
{
gantries[i] = new Gantry(3);
add(gantries[i]);
System.out.println(gantries[i].getY());
gantries[i].setBounds(15 * (i + 1), 100, 10, 50);
System.out.println(gantries[i].getBounds());
}
}'
第二个JPanel
:
public Gantry(int y)
{
this.y = y;
packageY = new ArrayList();
setBackground(Color.red);
setPreferredSize(new Dimension(10, 50));
}
提前致谢。
答案 0 :(得分:0)
或许考虑使用未修饰的JInternalFrame?这将做你想要它做的事情,而不是大惊小怪。另外,使用setBounds而不是布局管理器通常被认为是个坏主意。
如果你绝对肯定会以这种方式做事,那么你确定你正在调用组件类的重绘方法as per spec吗?
最后,您确定父JPanel的大小足以容纳子组件上的setBounds调用吗?
答案 1 :(得分:0)
正确,屏幕上的Y仍然显示为5。
这告诉我你仍在使用面板的默认FlowLayout。
如果我执行getBounds(),则将其设置为正确的值rk。
是,但您在分配值后立即显示值。那不会告诉你任何事情。您需要在框架可见后显示边界。使框架可见将调用布局管理器。
因此请仔细检查以确保使用空布局。
如果这没有帮助,请发布展示问题的SSCCE。因此,创建一个JFrame并将布局设置为null。然后创建一个JPanel,设置其边界和背景,并将面板添加到框架中。向自己证明基本代码的工作原理。然后确定与工作代码和代码的不同之处。