クリックしたときにSpanButtonでクライアントプロパティを取得しようとしています。それはNullPointerExceptionをスローしています。SpanButtonクライアントプロパティがNullPointerExceptionをスローする
通常のボタンで同じコードをテストしたところ、問題なく動作しました。私はそこにバグがあるかもしれないと信じています。ここで
あなたはベアボーンプロジェクトから、この問題を再作成することができる方法である。
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がスローされます。調査の結果、SpanButton getClientProperty( "id")がnullを返すことがわかりました。
注:SpanButtonは可変サイズのため、使用する必要があります。