基本的にここでやろうとしているのは、どのボタンがクリックされたかに応じてパネルが表示されるクリックイベントを処理することです。たとえば、ボタン 1 をクリックすると、対応するパネルがポップアップします。しかし、パネルとクリック イベントは、お互いについて何も知りません。匿名クラスと呼ばれると思います。これを実装しようとすると問題が発生します。これを実装する良い方法は何でしょうか?
これは私のボタンクリックイベントクラスです
public class buttonHandle extends Composite {
private static buttonHandleUiBinder uiBinder = GWT
.create(buttonHandleUiBinder.class);
@UiField Button button;
@UiField Button button_1;
interface buttonHandleUiBinder extends UiBinder<Widget, buttonHandle> {
}
public buttonHandle() {
initWidget(uiBinder.createAndBindUi(this));
}
@UiHandler("button")
void onButtonClick(ClickEvent event) {
}
@UiHandler("button_1")
void onButton_1Click(ClickEvent event) {
}
}
これは、ボタンがクリックされるたびに新しいボタンを追加しようとしているクラスです
public class PanelHandle extends Composite {
private AbsolutePanel absolutePanel = new AbsolutePanel();
public PanelHandle() {
initWidget(absolutePanel);
absolutePanel.setSize("1027px", "636px");
Label lblHello = new Label("Hello");
absolutePanel.add(lblHello, 47, 80);
Label lblHello_1 = new Label("Hello");
absolutePanel.add(lblHello_1, 232, 249);
// TODO Auto-generated constructor stub
}
public void buttonOne()
{
this.absolutePanel.clear();
Button but1 = new Button("button one");
this.absolutePanel.add(but1);
}
}
このようなことを試しましたが、新しいボタンでパネルを更新しません
private PanelHandle pHandle = new PanelHandle();
private static buttonHandleUiBinder uiBinder = GWT
.create(buttonHandleUiBinder.class);
@UiField Button button;
@UiField Button button_1;
interface buttonHandleUiBinder extends UiBinder<Widget, buttonHandle> {
}
public buttonHandle() {
initWidget(uiBinder.createAndBindUi(this));
}
@UiHandler("button")
void onButtonClick(ClickEvent event) {
Window.alert("hello buttone clicked");
pHandle.buttonOne();
}
@UiHandler("button_1")
void onButton_1Click(ClickEvent event) {
}
}
これまで、PanelHandle クラスでメソッドを呼び出そうとしましたが、スタック オーバーフローなどのエラーが発生しています。私が試した別の方法では、追加時にパネルを更新できません。ここでは、ロジックを理解するまでテストするためだけに、パネルの代わりにボタンを使用しています。
助けてくれてありがとう!