簡體   English   中英

JPanel 設置邊界

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM