2

我正在尝试在JPanel. 我希望这两个组件都延伸到分层窗格的边缘。我已经覆盖了paintComponent顶部组件的方法,除了我想显示覆盖之外,通常什么都不做。然后它在适当的位置绘制适当的文本。

这是我对布局问题的解决方案:

JLayeredPane jlp = new JLayeredPane();
jlp.setLayout(new OverlayLayout(jlp) {
    @Override
    public void layoutContainer(Container target) {
        for (Component c: target.getComponents())
            c.setBounds(0, 0, target.getWidth(), target.getHeight());
    }
});

问题是 - 有没有更好的方法来做到这一点而不覆盖layoutContainer?这对我来说似乎是一个黑客行为。我的意思是,我真的不敢相信在布局组件时没有这样做的选项。但如果我不覆盖该方法,它会在顶部和左侧留下空隙。

我在这里遗漏了什么,还是这是处理这些要求的正确方法?

4

1 回答 1

2

OverlayLayout 并非旨在调整所有组件的大小以填充整个可用空间。实际上,您已经创建了一个自定义布局管理器。这种方法没有任何问题。

我不确定您为什么使用 JLayeredPane。您应该能够将常规 JPanel 与 OverlayLayout 和多个组件一起使用。

或者,如果您想使用 JLayeredPane,那么您可能不需要 OverlayLayout。您可以将 ComponentListener 添加到分层窗格并在生成调整大小的事件时调整所有组件的大小。

于 2011-11-23T21:45:13.000 回答