これは、Henrique が以前の投稿で提案した「不可視のトリック」を使用して動作しています。
function doGet() {
var app = UiApp.createApplication();
var checkbox = app.createCheckBox("Toggle Visiblity").setName("togglebox").setId("togglebox").setValue(true);
var checkbox2 = app.createCheckBox("Toggle Visiblity").setVisible(false);
var hpanel = app.createHorizontalPanel();
hpanel.add(checkbox).add(checkbox2);
app.add(hpanel);
var listBox = app.createListBox(true)
.addItem("Item #1")
.addItem("Item #2")
.addItem("Item #3")
.setVisible(false);
app.add(listBox);
var ChandlerA = app.createClientHandler().forTargets(listBox).setVisible(false)
.forTargets(checkbox2).setVisible(true).setValue(false)
.forEventSource().setVisible(false);
checkbox.addClickHandler(ChandlerA)
var ChandlerB = app.createClientHandler().forTargets(listBox).setVisible(true)
.forTargets(checkbox).setVisible(true).setValue(true)
.forEventSource().setVisible(false);
checkbox2.addClickHandler(ChandlerB)
listBox.setVisible(true);
return app
}
編集:最後のステートメントlistBox.setVisible(true)
は私の意見では論理的ではないことに注意してくださいが、それを省略すると、クリックする前にlistBoxが表示されません...私はそれを本当に理解していません...誰かが知っていますか?
EDIT2:おっと、私はなんてばかげているのですかsetVisible(false)
、listBoxを作成するときにあなたが追加したことに気づきませんでした;-Pうーん...私からは本当にばかげています...あなたは「見えない」を開始したかったと思いますか?この場合、このコードにいくつかの小さな変更を加える予定です... このように (最終的に両方のバージョンを表示することにしました...)
function doGet() {
var app = UiApp.createApplication();
var checkbox = app.createCheckBox("Toggle Visiblity").setName("togglebox").setId("togglebox").setVisible(false);
var checkbox2 = app.createCheckBox("Toggle Visiblity").setVisible(true).setValue(false);
var hpanel = app.createHorizontalPanel();
hpanel.add(checkbox).add(checkbox2);
app.add(hpanel);
var listBox = app.createListBox(true)
.addItem("Item #1")
.addItem("Item #2")
.addItem("Item #3")
.setVisible(false);
app.add(listBox);
var ChandlerA = app.createClientHandler().forTargets(listBox).setVisible(false)
.forTargets(checkbox2).setVisible(true).setValue(false)
.forEventSource().setVisible(false);
checkbox.addClickHandler(ChandlerA)
var ChandlerB = app.createClientHandler().forTargets(listBox).setVisible(true)
.forTargets(checkbox).setVisible(true).setValue(true)
.forEventSource().setVisible(false);
checkbox2.addClickHandler(ChandlerB)
return app
}