在JPanel上绘制JLabel

时间:2012-12-02 03:21:06

标签: java swing jframe jpanel java-2d

我设置了JPanel,我JLabel作为伪按钮放在JPanel(带jPanel.add(jLabel))的顶部。我想动画JPanel而不影响JLabel,但每次重新绘制JPanel时,标签都会消失。 (我相信他们正在被涂上)。

我还尝试使用JLayeredPane并将JLabelJPanel分开,但这也无法解决问题。

有没有办法可以实现我的目标?

我的代码

这将它设置为JLabel和jPanel。

mainPanel = new JPanel();
JLayeredPane c = new JLayeredPane();

c.setPreferredSize(new Dimension(WIDTH, HEIGHT));
c.setVisible(true);
c.setOpaque(true);
c.add(mainPanel,new Integer(0));
c.add(test, new Integer(2));
add(c);
mainPanel.setBounds(0, 0, WIDTH, HEIGHT);

这显示了JPanel中的paintComponent方法(它是一个扩展JPanel的自定义类)

public void paintComponent(Graphics g){
    super.paintComponent(g);
    scene = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);
    g2d = scene.createGraphics();
    Rectangle2D.Double rec = new Rectangle2D.Double(questionBox.getXFloat(), questionBox.getYFloat(), questionBox.getWidthFloat(), questionBox.getHeightFloat());
    g2d.fill(rec);
    g.drawImage(scene, 0, 0, this);
}

为了澄清,questionBox方法只获取矩形的更新值。 wh代表宽度和高度。

这是我的JLabel类的构造函数

scene = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);

0 个答案:

没有答案