gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:50:10 26 4
gpt4 key购买 nike

我得到了这个作业,当我点击它时,我需要删除一个具有相同文本的按钮。例如,如果我有 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]);
}


}



}

}

最佳答案

如评论中所述,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]);
}
}
}
}

最后,为了不混淆类型和对象,Java中常见的编码原则是变量名以小写字母开头。

关于java - 单击时删除具有相同文本的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54862139/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com