我正在尝试将较小的面板(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在特定位置绘制自己?可怕的想法?
答案 0 :(得分:3)
为什么不在父面板上setLayout(null)
,然后在将子面板添加到父面板之前,使用它的setBounds
方法设置它的位置和尺寸。这样就无需使用paintComponent
来定位子面板。
如果您的父面板应该具有与其他组件的特定布局,并且sub应覆盖所有这些,请查看JLayer(Java 7)/ JXLayer(Java 6)。
第三种解决方案可以使用JLayeredPane。