0

我有一个JPanel设置,我将JLabels 作为放置在JPanel(with jPanel.add(jLabel)) 顶部的伪按钮。我想在JPanel不影响JLabels 的情况下为 s 设置动画,但是每次我重新绘制 s 时JPanel,标签都会消失。(我相信他们正在被涂上)。

我也尝试过使用 aJLayeredPane和分隔JLabels 和JPanel,但这也不起作用。

有没有办法实现我想要的?

我的代码

这设置了 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);
4

0 回答 0