gpt4 book ai didi

java - 是否可以将 JPanel 覆盖在另一个 JPanel 之上?

转载 作者:行者123 更新时间:2023-12-01 23:53:41 24 4
gpt4 key购买 nike

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

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

我想覆盖 parent 的 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 在特定位置绘制自己?糟糕的主意?

最佳答案

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

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

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

关于java - 是否可以将 JPanel 覆盖在另一个 JPanel 之上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15961505/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com