0

我正在尝试将较小的面板 ( sub) 覆盖在较大的面板 ( parent) 上。sub 的尺寸小于 parent 的尺寸。

JPanel sub = new JPanel();
JPanel parent = new CustomPanel();

我想覆盖父级的paintComponent方法以在左上角绘制 sub ,从顶部和左侧偏移 5 个像素。它看起来像这样:

class CustomPanel extends JPanel() {

    JPanel sub = null;

    public CustomPanel(JPanel sub) {
        this.sub = sub;
    }

    @Override
    public void paintComponent(Graphics g) {
        this.paintComponent(g);
        // TODO: Here is where I would call something like sub.paint();
        // However, I want sub to "start its paint" 5 pixels inside of
        // parent's dimensions. How do I specify this?

是否可以告诉 sub 在特定位置绘制自己?可怕的想法?

4

1 回答 1

3

为什么不直接setLayout(null)在父面板上,然后在将子面板添加到 parent 之前,使用它的setBounds方法设置它的位置和尺寸。这样就不需要paintComponent用于定位子面板了。

如果您的父面板应该具有与其他组件的特定布局,并且子面板应该覆盖所有这些,请查看JLayer (Java 7) / JXLayer (Java 6)。

第三种解决方案可以使用JLayeredPane

于 2013-04-12T02:10:37.357 回答