Java 更换JPanel元件而不添加到面板末端?

Java 更换JPanel元件而不添加到面板末端?,java,swing,user-interface,jpanel,Java,Swing,User Interface,Jpanel,我在早些时候发布了一个关于这个问题的问题,但解决方案从未奏效,现在它处于不同的情况下。我正在制作一个“便士间距”程序,当按下“确认”按钮时,一个随机数字将指示“便士”将落在板上的哪个点(板上充满图像图标),并在这个过程中删除用于占据所选空间的图像图标。 我设置了一个GridBagLayout来约束每个图标,我的按钮移除所选的点没有问题,但是它找不到一种方法在它的位置添加一个新图标。它只是添加到JPanel的末尾。 以下是我对按钮的编码: private class AddListener imp

我在早些时候发布了一个关于这个问题的问题,但解决方案从未奏效,现在它处于不同的情况下。我正在制作一个“便士间距”程序,当按下“确认”按钮时,一个随机数字将指示“便士”将落在板上的哪个点(板上充满图像图标),并在这个过程中删除用于占据所选空间的图像图标。 我设置了一个GridBagLayout来约束每个图标,我的按钮移除所选的点没有问题,但是它找不到一种方法在它的位置添加一个新图标。它只是添加到JPanel的末尾。 以下是我对按钮的编码:

private class AddListener implements ActionListener {
public void actionPerformed(ActionEvent a){
    if (a.getSource()== confirm) {
        if (numberToss >0){
                thrown = pitch.nextInt(25) + 1;
                System.out.println(thrown);
           //kol is an array to check for repeated numbers in randomization
        if (kol.contains(thrown)==false){               
            input.remove(spot.get(thrown));
            //spot is a map to set icons down with a association with number
            spot.put(thrown, bSet);
            input.add((spot.put(thrown, bSet)));
            repaint();
            kol.add(thrown);
            }
        else {
            JOptionPane.showMessageDialog(null, "Your toss landed onto an occupied spot; you receive no points");
            }
        numberToss--;   
        }
        else{
        JOptionPane.showMessageDialog(null, "Out of tosses.");  
        }

      }

    }

有人知道如何用前一个图标替换新图标(bSet)吗?提前谢谢

您可能可以使用一个欺骗,它返回给定对象的约束,因此,例如,您可以获取要删除的组件的当前约束,并在添加新组件时使用这些约束……作为一个想法。您也可以使用
JButton
JLabel
简单地交换图标……我实际上已经尝试过了,但它说找不到符号“.getConstraints(comp)”。我已经导入了javax.swing.*、java.awt.*和java.util.*,所以我找不到它拒绝它的理由。您是否使用了用于Panel的
GridBagLayout
实例为了更快地获得更好的帮助,发布了一个或。我发布的代码已经是一个最小的示例;我拿出了理解程序不需要的部分。我将编辑并发布整个编码的简化版本。您可能可以使用一个欺骗,它返回给定对象的约束,因此您可以,例如,获取要删除的组件的当前约束,并在添加新组件时使用这些约束…作为一个想法。您也可以使用
JButton
JLabel
简单地交换图标……我实际上已经尝试过了,但它说找不到符号“.getConstraints(comp)”。我已经导入了javax.swing.*、java.awt.*和java.util.*,所以我找不到它拒绝它的理由。您是否使用了用于Panel的
GridBagLayout
实例为了更快地获得更好的帮助,发布了一个或。我发布的代码已经是一个最小的示例;我拿出了理解程序不需要的部分。我将编辑并发布一个简化版本,同时也将介绍整个代码。