OK]をので、私は、かなり具体的で、私には非常に複雑な問題を持っています。他のウィジェットの値が変更されたときに、GWTフレックステーブル内のウィジェットの値を変更しますか?私はGWTの初心者だとして
私は動的にその細胞がGWTウィジェットを含む行を、追加するために使用され、GWTのフレックステーブルを持っています。行番号は変更されますが、静的な列の数は常に6です。各行には、削除ボタンが付いたセルと、それぞれに独自のテキストボックスを持つ5つのセルが含まれています。
私は何をする必要があり、コードは、1行分のセル6にテキストボックスとの間の関係の種類と次の行(またはその逆)のセル5のテキストボックス何とかあります。
説明するために:何かが[1,6]、[2,5]でテキストボックスの内容が同じ値で上書きする必要があるでテキストボックスに変化したとき。 [2,5]のテキストボックスが変更された場合、[1,6]のテキストボックスも同様に変更する必要があります。私はそれが特定のアクションを実行するユーザーを必要としない、onValueChangeまたはブラーまたは類似した何かを経由して発生する必要があり、変更をコミットするために、ボタンを使用することはできません。
私の問題は、ほとんどがフレックステーブルとその内容に特定のセルに対処する方法を把握しようとしているから茎。ボタンを削除するには、クリックイベントハンドラを使用するだけで問題は解決しましたが、この問題ではソリューションを思いつくことができません。それはビジネスの秘密ですので、
悲しいことに、私はまた、私が今まで持っていたコードのいずれかを提供することはできません。私は上記のような問題の幅広い説明のみを与えることができます。
EDIT: 実際に、それはおそらく、この特定の問題の面で多くのコードを持っていないのより多くの問題です。私は何
は最初のみヘッダ行を有し、フレックステーブルです。この表の下のボタンをクリックするとaddNewField()メソッドは、デフォルト値の設定と、新しい行にテキストフィールドを追加し、ちょうど作成が含まれている、と呼ばれています。
addNewField() {
int rows = flextable.getRowCount();
Button removeBtn = new Button("x");
removeBtn.getElement().setId(Integer.toString(rows));
//then the button's event handler
TextBox name = new TextBox();
name.setText("something");
flextable.setWidget(rows, 0, "name");
//repeat 4 more times with incrementing columns for the other widgets
}
このようにして、編集可能なテキストボックスの行全体を追加します。私が必要とするのは、選択した行の6番目の列のTextBoxと5番目の列のTextBoxの値に影響を及ぼす方法です。
EDIT2:どのように行かれるかを見るために汚れたオプションを試しましたそして何とかif内部の比較がアプリを壊す。コンパイラはnullpointerexceptionを検出し、コンパイルに失敗して起動しないため、ブレークポイントでデバッグすることさえできません。私はなぜそれを理解することはできません。私はテスト目的のためにイベントに直接コードを投げたので、醜さを許してください。
TextBox bis = new TextBox();
bis.setText(rows + ":10:00");
subs.setWidget(rows, 5, bis);
bis.addValueChangeHandler(new ValueChangeHandler<String>()
{
@Override
public void onValueChange(ValueChangeEvent<String> event)
{
allRows: for (int i = 0; i < subs.getRowCount(); i++)
{
for (int j = 0; j < subs.getCellCount(i); j++)
{
if (subs.getWidget(i, j) == bis)
{
TextBox widgetAtColumnSix = ((TextBox) subs.getWidget(i, 5));
String text = widgetAtColumnSix.getText();
TextBox widgetAtColumnFiveRowPlusOne = ((TextBox) subs.getWidget(i + 1, 4));
widgetAtColumnFiveRowPlusOne.setText(text);
break allRows;
}
}
}
}
});
...キャッチする必要があります。あなたがしたことが大いに助けてくれることを示してください。 – Tobika