Я создал JButton, на который, если я нажму, отобразится карта. Каждый раз, когда я нажимаю эту кнопку, предполагается, что появится следующая карта того же костюма, и этот процесс должен продолжаться до тех пор, пока не будут показаны все 13 карт одного и того же костюма. Я показываю карты в виде изображений на ImageIcon в JLabel. Проблема в том, что если я хочу отображать все карты в одном и том же месте, первая карта не удаляется со своего места, скрывая остальную часть 12 карт под собой. Это означает, что каждая новая карта, которая должна отображаться, подпадает под ее прецедентную карту. Я попытался удалить карту прецедента из JLabel с помощью frame.remove (mylabel); метод. Но это не помогло. Более того, если я изменяю координаты в методе setBound(), карта отображается. Но я хочу отобразить карту в том же месте, где была показана первая карта. Я использовал счетчик для перехода к следующей карте. Каждый раз, когда отображается карта, она увеличивает приращение переменной счетчика, в конечном итоге переходит к следующей карте. Пожалуйста, расскажите, как я могу удалить предыдущую карту, чтобы отобразить следующую карту. Я использовал всю логику отображения карты внутри метода ActionListener. JFrame и JButton объявляются вне этого метода ActinListener. Мой код приведен ниже:Удаление изображения из JLabel в JFrame
my_btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ImageIcon pic = new ImageIcon();
JLabel lbl = new JLabel();
if(counter == 0) {
pic = new ImageIcon(c1);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 1) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(c2);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 2) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(c3);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 3) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(c4);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 4) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(c5);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 5) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(c6);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 6) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(c7);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 7) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(c8);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 8) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(c9);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 9) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(c10);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 10) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(cj);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 11) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(cq);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else if(counter == 12) {
frame.remove(lbl);
lbl.setVisible(false);
pic = new ImageIcon(ck);
lbl = new JLabel(pic);
frame.add(lbl);
lbl.setBounds(200, 100, 100, 100);
lbl.setVisible(true);
counter++;
}
else {
frame.remove(lbl);
lbl.setVisible(false);
JOptionPane.showMessageDialog(frame, "Card deck ends.");
}
}
});