LayoutManager不适用于背景图像内容窗格

时间:2013-10-16 15:18:23

标签: java

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

"JFrame"

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

    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);
      }
    }

1 个答案:

答案 0 :(得分:1)

问题似乎是你永远不会覆盖FlowLayout中的默认布局管理器(bgImagePanel)。您应该在其构造函数中调用super(b)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) {}
}