2

我想知道是否可以将创建的组合框放置在 JPanel 上的背景图片之上。但是,我正在尝试这样做,我认为背景图像与我的组合框重叠,因此它不会出现。任何人都知道在顶部带有组合框的 JPanel 上放置背景图像并使用框布局进行定位的一种干净方式。

4

2 回答 2

1

我认为您应该使用 setComponentZOrder() 方法。

这是一个例子:http ://weblogs.java.net/blog/2009/01/21/swing-internals-paint-order

(查看 JavaDoc 以获取更多详细信息:setComponentZOrder() 方法

于 2013-01-09T21:02:03.447 回答
1

另一种可能更常用的方法是让您覆盖JPanel paintComponent并将图像直接绘制到Graphics 对象:

JFrame frame=...;

final BufferedImage bg=ImageIO.read(new URL("http://cs.anu.edu.au/student/comp6700/icons/DukeWithHelmet.png"));

JPanel p=new JPanel() {
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);

        Graphics2D g2d=(Graphics2D)g;
        g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);

        g2d.drawImage(bg,0,0,null);
    }

    @Override
    public Dimension getPreferredSize() {//so our JPanel will fit the image entirely
        return new Dimension(bg.getWidth(),bg.getHeight());
    } 
};

frame.add(p);
frame.pack();
frame.setVisible(true);
于 2013-01-09T22:13:21.830 回答