У меня техническая проблема с моим ActionListener. Видите ли, у меня есть одна кнопка, которая имеет несколько возможных действий, в зависимости от того, какой элемент меню был нажат ранее. Поэтому я создал ActionListener с ActionEvent e. Предполагается, что «e» проверяет одно из трех условий (потому что у меня есть 3 элемента меню — «Добавить», «Удалить» и «Изменить»), и в зависимости от того, какой из них выбран, происходящие действия отличаются друг от друга.
Проблема в том, что ни одно из условий e.getSource() никогда не проверяется (хотя я проверял их несколько раз. Я застрял в этой проблеме уже 3 дня, так что, честно говоря, небольшая помощь была бы очень Добро пожаловать!
А пока, счастливого Рождества и счастливого Нового года!
private void buttonValidateActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here:
ActionListener l = (ActionEvent e) -> {
if(e.getSource()==menuItemAdd)
{
System.out.println("eureka!");
buttonResearch.setEnabled(false);
if (evt.getSource()== buttonValidate)
{
DataTransac dt = new DataTransac();
dt.ajouterProgrammeurs("...");
}
}
if(e.getSource()==itemDelete)
{
if(evt.getSource()== buttonValidate)
{
DataTransac dt = new DataTransac();
dt.deleteProgrammers("...");
}
}
if(e.getSource()==itemModify)
{
if(evt.getSource()==buttonValidate)
{
DataTransac dt = new DataTransac();
dt.modifyProgrammeurs("...");
}
}
};
menuItemAdd.addActionListener(l);
itemDelete.addActionListener(l);
itemModify.addActionListener(l);
/*
*/
}
Редактировать: я попробовал метод ".equals()", однако он тоже не сработал.
ActionListener l = (ActionEvent e) -> {
if(e.equals(menuItemAjouter))
{
System.out.println("eureka!");
buttonResearch.setEnabled(false);
if (evt.getSource()== buttonValidate)
{
DataTransac dt = new DataTransac();
dt.addProgrammers("...");
}
...
Редактировать 2: после тестирования метода хеширования я случайно наткнулся на странную ошибку. Сначала, когда я нажимаю кнопку «Добавить» MenuItem, а затем кнопку «Подтвердить», ничего не происходит. Однако, если я нажму кнопку «Подтвердить», затем «Добавить элемент меню, код сработает... Я собираюсь попробовать другие условия.
buttonValidateActionPerformed(ActionEvent evt)
очевидно вызывается из ActionListener кнопки. Этот метод вызывается, когда пользователь нажимает вашу кнопку. Внутри этого метода вы добавляете новый ActionListener к каждому пункту меню, чего делать не следует. Как теперь выглядит код, при первом нажатии кнопки пользователем элементы меню не имеют собственных ActionListeners. Когда пользователь нажимает кнопку во второй раз, каждый пункт меню имеет один ActionListener. В следующий раз каждый пункт меню будет иметь два ActionListeners. Потом три, потом четыре и так далее. - person VGR   schedule 24.12.2018