我有一个JPanel
设置,我将JLabel
s 作为放置在JPanel
(with jPanel.add(jLabel)
) 顶部的伪按钮。我想在JPanel
不影响JLabel
s 的情况下为 s 设置动画,但是每次我重新绘制 s 时JPanel
,标签都会消失。(我相信他们正在被涂上)。
我也尝试过使用 aJLayeredPane
和分隔JLabel
s 和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
方法只是获取矩形的更新值。w
并h
代表宽度和高度。
这是我的 JLabel 类的构造函数
scene = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);