[英]JPanel setbounds
我正在嘗試將一個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));
}
提前致謝。
也許考慮使用未修飾的JInternalFrame ? 這將做你想要它做的事情,而不會大驚小怪。 此外,使用 setBounds 而不是布局管理器通常被認為是一個壞主意。
如果您絕對肯定地決定以這種方式做事,那么您確定要按照規范調用組件類的重繪方法嗎?
最后,您確定父 JPanel 的大小足以容納子組件上的 setBounds 調用嗎?
正確,屏幕上的 Y 仍然顯示為 5。
這告訴我您仍在使用面板的默認 FlowLayout。
如果我執行 getBounds() 它被設置為正確的值,rk。
是的,但您在分配值后立即顯示該值。 那不會告訴你任何事情。 您需要在框架可見后顯示邊界。 使框架可見將調用布局管理器。
因此,請仔細檢查以確保您使用的是空布局。
如果這沒有幫助,則發布您的SSCCE來演示問題。 所以創建一個 JFrame 並將布局設置為 null。 然后創建一個 JPanel,設置它的邊界和背景並將面板添加到框架中。 向自己證明基本代碼有效。 然后確定與工作代碼和您的代碼有何不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.