簡體   English   中英

在Java Swing Null布局中,設置相對於容器底部的位置

[英]In Java Swing Null Layout, set position relative to bottom of container

這可能是一個非常基本的問題,但是我在網上找不到任何有關它的信息。

我在Java swing中工作,有一個帶有空布局管理器的JPanel(即使用絕對定位)。 JPanel正在JFrame中填充一個空間,以便在調整JFrame的大小時其大小將發生變化。 在此JPanel中,我還有其他一些使用Component.setBounds()放置的Component.setBounds() 我希望相對於JPanel的底部設置這些組件之一,以便在包含JPanel的大小調整時,較小的JComponent停留在容器的底部。

我試圖通過重寫getLocation()getBounds()方法來引用容器高度來做到這一點,但是,即使調用revalidate()repaint()之后,這些方法似乎都無法以覆蓋getPreferredSize()的方式工作。 不幸的是,這里不能使用諸如BorderLayout之類的其他布局管理器。

有沒有辦法做這樣的事情? 我是否缺少明顯的東西? 如果不是,是否有辦法監聽容器的高度變化並重新調用.setBounds()

嘗試收聽面板的resize事件:

panel.addComponentListener(new ComponentAdapter() {
        @Override
        public void componentResized(ComponentEvent arg0) {
            component.setBounds(...);

        }
    });

您可以通過此方法引用panel.getBounds並相應地設置組件邊界。

為此,您可以將組件偵聽器添加到JFrame。

addComponentListener(new ComponentAdapter(){
    public void componentResized(ComponentEvent e){
        //Do stuff here
    }
});

在組件偵聽器內部,您可以更改任何想要的大小和位置。 要將它們固定在底部,只需獲取JFrame的大小並減去特定的數量,然后將其設置為要固定在底部的y位置即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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