установить прозрачную панель поверх холста

У меня есть холст, и я хочу, чтобы, когда мышь вошла в него, некоторая прозрачная Jpanel, содержащая некоторые компоненты, отображалась поверх моего холста. Для этого я использовал JlayeredPane; но, как вы видите в следующем примере, когда я хочу отобразить прозрачную панель поверх холста, добавив ее в jLayeredPane на верхнем слое, ее фон отображается как цвет панели, которая находится под холстом.

public class NewClass {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
frame.setSize(200 , 200);
JLayeredPane layeredPane = new JLayeredPane();
frame.setContentPane(layeredPane);
JPanel canvasPanel = new JPanel();
canvasPanel.setLayout(new GridLayout()); 
canvasPanel.setBackground(Color.RED);
Canvas canvas = new Canvas();
canvas.setBackground(Color.BLACK);
canvasPanel.add(canvas);
layeredPane.add(canvasPanel , JLayeredPane.PALETTE_LAYER);
canvasPanel.setSize(200 , 200);

JPanel transparentPanel = new JPanel();
transparentPanel.setSize(100 , 100);
transparentPanel .setOpaque(false);
transparentPanel.add(new JButton("button"));

layeredPane.add(transparentPanel , JLayeredPane.DRAG_LAYER);

frame.setVisible(true);

    }
}

как я могу показать прозрачную панель на холсте, чтобы фон выглядел как холст?


person sajad    schedule 03.06.2012    source источник


Ответы (1)


Я не понимаю проблемы, когда я запустил код, он привел к кнопке поверх красного квадрата на черном фоне.

Если у вас это не работает, попробуйте установить красный цвет фона transparentPanel (так же, как canvasPanel).

Хотя это, вероятно, не сработает для не сплошных фонов.

person vandale    schedule 20.07.2012