Я пытаюсь получить свойство клиента на SpanButton при нажатии. Это бросает исключение NullPointerException.Свойство клиента SpanButton throws NullPointerException
Я тестировал один и тот же код с помощью обычной кнопки, и он работает нормально. Я считаю, что там может быть ошибка.
Вот как вы можете воссоздать этот вопрос из проекта Barebone:
Form hi = new Form("Hi World");
Button button = new Button("Button");
button.putClientProperty("id", 100);
SpanButton spanButton = new SpanButton("SpanButton");
spanButton.putClientProperty("id", 200);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
int id = (int) evt.getComponent().getClientProperty("id");
System.out.println("Standard Button action listener: id = " + id);
}
});
spanButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
int id = (int) evt.getComponent().getClientProperty("id");
System.out.println("Span button action listener: id = " + id);
}
});
hi.addComponent(button);
hi.addComponent(spanButton);
hi.show();
Если нажать на кнопку, то выход напечатанной правильно:
Стандартный слушатель Кнопка Действие: ID = 100
Если вы нажмете на SpanButton, вы получите исключение NullPointerException. После расследования я узнал, что свойство getClientProperty (id) SpanButton возвращает null.
Примечание: Мне нужно использовать SpanButton из-за его поддержки переменных размеров.