Java 单击时删除具有相同文本的按钮

Java 单击时删除具有相同文本的按钮,java,Java,我得到了这个任务,我需要删除一个按钮与相同的文本时,我点击它。 例如,如果我有3个按钮,上面有单词“word”,我单击其中一个按钮,它将从框架本身中删除所有按钮。 我很可能没有得到变量的正确值来获取它们的文本,所以它不会删除它们 我的代码: private String NamesArr[]= {"Yakir","Yarden","Igor","Maoz","Moshe","Israel","Tal","Haim","Nati","Mor","Daniel","Idan"}; private B

我得到了这个任务,我需要删除一个按钮与相同的文本时,我点击它。 例如,如果我有3个按钮,上面有单词“word”,我单击其中一个按钮,它将从框架本身中删除所有按钮。 我很可能没有得到变量的正确值来获取它们的文本,所以它不会删除它们

我的代码:

private String NamesArr[]= {"Yakir","Yarden","Igor","Maoz","Moshe","Israel","Tal","Haim","Nati","Mor","Daniel","Idan"};
private Button ButtonArr[]=new Button[NamesArr.length];
private Font font;

public StudentsGUI(String caption) {
    super(caption);
    this.setLayout(new GridLayout(3,3));
    font=new Font("Ariel",Font.BOLD,35);

    for(int i=0;i<NamesArr.length;i++) {
        ButtonArr[i]=new Button(" "+NamesArr[(int)(Math.random()*NamesArr.length)]);
        ButtonArr[i].setFont(font);
        ButtonArr[i].addActionListener(this);
        this.add(ButtonArr[i]);
    }
    setLocation(800,500);
    setVisible(true);
    pack();
}

public void actionPerformed(ActionEvent e) {
    if(e.getSource()==ButtonArr) {
            String btnText=ButtonArr.toString();
        for(int i=0;i<NamesArr.length;i++) {
            if(ButtonArr[i].getLabel().equals(btnText))
                    this.remove(ButtonArr[i]);
            }


    }



}

}
私有字符串NamesArr[]={“Yakir”、“Yarden”、“Igor”、“Maoz”、“Moshe”、“Israel”、“Tal”、“Haim”、“Nati”、“Mor”、“Daniel”、“Idan”};
私有按钮ButtonAr[]=新按钮[NameArr.length];
专用字体;
公共学生GUI(字符串标题){
超级(标题);
这个.setLayout(新的GridLayout(3,3));
字体=新字体(“Ariel”,字体粗体,35);

对于(int i=0;i注释中提到的
actionPerformed
的代码中有几个缺陷。首先,要检查源类型,不能将两个对象(在本例中是两种不同的类型)与
=
进行比较。其次,从实际对象中检索按钮文本。如下所示:

public void actionPerformed(ActionEvent e) {
    if (e.getSource() instanceof Button) {
        String btnText = ((Button)e.getSource()).getLabel();
        for(int i=0; i<ButtonArr.length; i++) {
            if (ButtonArr[i].getLabel().equals(btnText)) {
                this.remove(ButtonArr[i]);
            }
        }
    }
}
public void actionPerformed(ActionEvent e){
if(如getSource()instanceof按钮){
字符串btnText=((按钮)e.getSource()).getLabel();

对于(int i=0;i注释中提到的
actionPerformed
的代码中有几个缺陷。首先,要检查源类型,不能将两个对象(在本例中是两种不同的类型)与
=
进行比较。其次,从实际对象中检索按钮文本。如下所示:

public void actionPerformed(ActionEvent e) {
    if (e.getSource() instanceof Button) {
        String btnText = ((Button)e.getSource()).getLabel();
        for(int i=0; i<ButtonArr.length; i++) {
            if (ButtonArr[i].getLabel().equals(btnText)) {
                this.remove(ButtonArr[i]);
            }
        }
    }
}
public void actionPerformed(ActionEvent e){
if(如getSource()instanceof按钮){
字符串btnText=((按钮)e.getSource()).getLabel();

对于(int i=0;ithe getText()方法应该能够使其工作事件的源不能是数组,因此
if(e.getSource()==buttonar)
将始终计算为
false
我应该在哪里实现getText()btnText上的方法是so,不识别此方法。此外,源事件不正确?我的意思是,我有其他代码与工作相同(将按钮两侧的数字相加)
ButtonArr.toString()
返回数组的字符串表示形式,而不是单个按钮的文本。因此
if(ButtonArr[I].getLabel().equals(btnText))
将始终计算为
false
。getText()方法应该能够使其工作事件的源不能是数组,因此
if(e.getSource()==buttonar)
将始终计算为
false
我应该在哪里实现getText()btnText上的方法是so,不识别此方法。此外,源事件不正确?我的意思是,我有其他代码与工作相同(将按钮两侧的数字相加)
ButtonArr.toString()
返回数组的字符串表示形式,而不是单个按钮的文本。因此
if(ButtonArr[I].getLabel().equals(btnText))
将始终被计算为
false
。谢谢:)总体上对编码来说还是有点陌生,所以我非常感谢您提供的任何提示:)话虽如此,我如何制作一个独立的按钮,使其不被删除?我应该使用变量来计算重复的数量吗?你应该就此提出一个新问题。确保描述所需的行为和代码的确切问题。Aight,可以,。谢谢。谢谢:)总体而言,对编码还是有点陌生,所以我很欣赏任何提示信息:)说到这里,我该如何制作一个独立的按钮,使其不会被删除?我应该使用变量来计算重复的数量吗?你应该就此提出一个新问题。确保描述所需的行为和代码的确切问题。Aight,will谢谢。