Я добавил несколько MultiButton
s динамически, и каждый из них имеет новый ActionListener
. Когда ActionListener
называется , он имеет тип Button
, а не фактический объект MultiButton
(то есть литой в MultiButton код ClassCastException
не может отличить Button
до MultiButton
).Почему компонент ActionEvent не подходит?
Есть ли способ получить MultiButton
? Или я сделал что-то глупое?
Код:
Container cBob = findContainerBob(f);
cBob.removeAll();
for (String str : things) {
MultiButton mb = new MultiButton();
mb.setTextLine1(str);
mb.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
MultiButton clickedMb = (MultiButton)evt.getComponent(); // Throws exception
});
cBob.addComponent(mb);
}
Если вы приводите к неправильному типу, вы не получите 'null' значение - вы получите' ClassCastException'. Поэтому ваше описание не имеет смысла, что очень затрудняет вам помощь. –
Ох. Да. Я имею ввиду это. Вопрос обновлен. Ошибка личной памяти: на самом деле это был вопрос, который я начал писать в пятницу, и я неправильно вспомнил точный симптом! - все-таки общая проблема остается прежней - почему это неправильный тип? – noelicus
Что такое _exactly_ 'MultiButton'? Это не стандартный компонент. –