0
我有一個分層窗格,其中包含各種動畫。我正在使用Jlabel(breakB)在一個正在破解的塊上顯示分解動畫。問題出現時,塊中斷。標籤應該消失,但是它保持可見。我一直在尋找解決方案几個小時,真的不知道發生了什麼,所以任何幫助將不勝感激。從JLayeredPane刪除JLabel
class breakBlock implements ActionListener {
public void actionPerformed(ActionEvent e) {
damageCount+=1;
System.out.println(damageCount);
JLabel breakB = new JLabel();
ImageIcon breakIcon = new ImageIcon();
if(digDown){
blockInt = standingOn;
} else {blockInt = nextTo;}
if(damageCount == 1){
breakIcon = new ImageIcon(break01);
}
if(damageCount == 2){
breakIcon = new ImageIcon(break02);
}
if(damageCount == 3){
breakIcon = new ImageIcon(break03);
}
if(damageCount == 4){
breakIcon = new ImageIcon(break04);
}
if(damageCount == 5){
breakIcon = new ImageIcon(break05);
}
breakB.setIcon(breakIcon);
breakB.setBounds(solidObjects.get(blockInt).getX(), solidObjects.get(blockInt).getY(), breakIcon.getIconHeight(), breakIcon.getIconWidth());
layeredPane.add(breakB, new Integer(2), 0);
if(damageCount == 6){
layeredPane.remove(solidObjects.get(blockInt));
layeredPane.remove(breakB);
layeredPane.repaint(); // sometimes needed
solidObjects.remove(blockInt);
damageCount = 0;
breakBlock.stop();
}
}
}
我的猜測是,你不刪除「JLabel」的正確實例。就我所知,你並沒有保留對你添加到'JLayeredPane'中的'breakB'的引用,因此,除非你依靠一些糟糕的算法找回它,否則你正在刪除一些實際上不存在的東西你的'JLayeredPane'。 –
您沒有爲每個添加到'layeredPane'的JLabel'' breakB'提供'global access'。 ''''''''''''''''''''''''''''''''''''你從'layeredPane'中移除的'JLabel'實際上並不存在於'layeredPane'上,它只是'actionPerformed'內創建的'local''變量'因此,當'damageCount == 6'條件成爲'true'時,實際上所期望的'JLabel'不會從'layeredPane'中移除。 –
那麼我應該讓breakB成爲一個全局變量還是什麼? 編輯:好的,我讓breakB一個全局變量,它現在工作。非常感謝! – splouk