Удалить кнопку с тем же текстом при нажатии - PullRequest
0 голосов
/ 25 февраля 2019

Я получил это назначение, где мне нужно удалить кнопку с тем же текстом, когда я нажимаю на нее.Например, если у меня есть 3 кнопки со словом «Слово» и я нажимаю на одну из них, она удалит их все из самой рамки.Скорее всего, я не получаю правильные значения переменных, чтобы получить их текст, поэтому он не удаляет их

Мой код:

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]);
            }


    }



}

}

1 Ответ

0 голосов
/ 25 февраля 2019

В коде 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 - начинать имена переменных со строчных букв.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...