我设置了JPanel
,我JLabel
作为伪按钮放在JPanel
(带jPanel.add(jLabel)
)的顶部。我想动画JPanel
而不影响JLabel
,但每次重新绘制JPanel
时,标签都会消失。 (我相信他们正在被涂上)。
我还尝试使用JLayeredPane
并将JLabel
和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);