1

我在将组件放置在将图像绘制为背景的容器上时遇到了一些麻烦。为什么会这样?我希望这四个按钮在框架右侧的某处垂直对齐。无论我使用什么布局技术,按钮的位置似乎都没有改变。

这是我的背景图像面板。是否有任何东西对组件的这种不可更改性负责?它缺少什么吗?

    static class bgImagePanel extends JPanel {
     Image bgimage = null;

      bgImagePanel(BorderLayout b) {
      MediaTracker mt = new MediaTracker(this);
      bgimage = Toolkit.getDefaultToolkit().getImage("bgimage1.jpg");
      mt.addImage(bgimage, 0);
        try {
         mt.waitForAll();
        } catch (InterruptedException e) {
        }
      }

      @Override
      protected void paintComponent(Graphics g) {
      super.paintComponent(g);
      int imwidth = bgimage.getWidth(null);
      int imheight = bgimage.getHeight(null);
      g.drawImage(bgimage, 1, 1, imwidth, imheight, null);
      }
    }
4

1 回答 1

1

问题似乎是您永远不会FlowLayout覆盖bgImagePanel. 您应该在其构造函数中调用super(b)or :setLayout(b)

public bgImagePanel(BorderLayout b) {
    super(b);
    MediaTracker mt = new MediaTracker(this);
    bgimage = Toolkit.getDefaultToolkit().getImage("bgimage1.jpg");
    mt.addImage(bgimage, 0);
    try {
       mt.waitForAll();
    } catch (InterruptedException e) {}
}
于 2013-10-16T15:52:04.693 回答