Java 将JPanel添加到图形面板,并使JPanel透明(对象除外)

Java 将JPanel添加到图形面板,并使JPanel透明(对象除外),java,swing,jpanel,transparency,java-2d,Java,Swing,Jpanel,Transparency,Java 2d,我正在尝试制作一个21点游戏,我想要设计我的程序的方式是使用一个图形面板(图像、卡片绘制等),面板顶部是一个带有按钮的JPanel。我希望这个JPanel是透明的,这样下面的图形面板是可见的,但是JButtons也不会变成透明的 如果有人能把我送到正确的方向 图形层: public class GraphicsBoard { String[] fileName = { "cards.png", "BlackJackBoard.png" }; ClassLoader cl = Gr

我正在尝试制作一个21点游戏,我想要设计我的程序的方式是使用一个图形面板(图像、卡片绘制等),面板顶部是一个带有按钮的JPanel。我希望这个JPanel是透明的,这样下面的图形面板是可见的,但是JButtons也不会变成透明的

如果有人能把我送到正确的方向

图形层:

public class GraphicsBoard {
    String[] fileName = { "cards.png", "BlackJackBoard.png" };
    ClassLoader cl = GraphicsBoard.class.getClassLoader();
    URL imgURL[] = new URL[2];
    Toolkit tk = Toolkit.getDefaultToolkit();
    Image imgCards, imgBG;

    public GraphicsBoard() throws Exception {
        for (int x = 0; x < imgURL.length; x++)
            imgURL[x] = cl.getResource("pictures/" + fileName[x]);
        imgCards = tk.createImage(imgURL[0]);
        imgBG = tk.createImage(imgURL[1]);
    }

    public void paintComponent(Graphics g) {
        g.drawImage(imgBG, 0, 0, 550, 450, 0, 0, 551, 412, this);

        Graphics2D g2 = (Graphics2D) g;
        for (int x = 0; x <= 550; x += 50) {
            g2.drawLine(x, 0, x, 450);
            g2.drawString("" + x, x + 5, 20);
        }
        for (int y = 5; y <= 450; y += 50) {
            g2.drawLine(0, y, 550, y);
            g2.drawString(" " + y, 0, y + 20);
        }
    }
}

我希望按钮层位于图形层的顶部。

有几种方法,可以

  • 使用,必须
    consume()
    或重新修补
    KeyEvents

我希望这个JPanel是透明的,这样图形面板 下面是可见的,但JButtons不会变为透明 嗯


一个JPanel。

为了更快地获得更好的帮助,请发布一个。即使建议是正确的+1,我喜欢1)使用多个简短的…,2)添加API或代码示例的链接,否则此答案可能会被用户删除,无论是否被接受,是否被否决
public class OverBoard extends JPanel implements ActionListener{
    JButton btnDeal = new JButton("Deal");

    public OverBoard(){
        btnDeal.addActionListener(this);
        add(btnDeal);
        setOpaque(false);
    }
}