私のCellTableには、1つの列にButtonCellがあります。だから私はCellTableの外にあるボタンをクリックして、これらのButtonCellを無効にする必要があります。セルテーブルのButtonCellを無効にする
答えて
おはようございます、
これは、早朝にやるとよい小さな例でした。ここであなたは私の解決策を持っています、私は言わないで、その最高ですが、働いています!
public class _57_DisableAllButtons implements EntryPoint {
boolean enable = false;
@Override
public void onModuleLoad() {
Button b1 = new Button("Button1");
Button b2 = new Button("Button2");
Button b3 = new Button("Button3");
RootPanel.get("nameFieldContainer").add(b1);
RootPanel.get("nameFieldContainer").add(b2);
RootPanel.get("nameFieldContainer").add(b3);
Button disableAll = new Button("Disabale all");
RootPanel.get("sendButtonContainer").add(disableAll);
disableAll.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
final RootPanel rootpannel = RootPanel.get("nameFieldContainer");
int widgetcount = rootpannel.getWidgetCount();
for (int i = 0; i < widgetcount; i++) {
Widget w = rootpannel.getWidget(i);
if(w instanceof Button){
((Button) w).setEnabled(enable);
}
}
enable = !enable;
}
});
}
}
独自のボタン電池のクラスを作成することができます。たとえば:
import com.google.gwt.cell.client.AbstractSafeHtmlCell;
import com.google.gwt.cell.client.Cell;
import com.google.gwt.cell.client.ValueUpdater;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.EventTarget;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.text.shared.SafeHtmlRenderer;
import com.google.gwt.text.shared.SimpleSafeHtmlRenderer;
/**
* A {@link Cell} used to render a button.
*/
public class StyledButtonCell extends AbstractSafeHtmlCell<String> {
private String disabledString = "";
private boolean disabled = false;
/**
* Construct a new ButtonCell that will use a {@link SimpleSafeHtmlRenderer}.
*/
public StyledButtonCell() {
this(SimpleSafeHtmlRenderer.getInstance());
}
/**
* Construct a new ButtonCell that will use a given {@link SafeHtmlRenderer}.
*
* @param renderer a {@link SafeHtmlRenderer SafeHtmlRenderer<String>} instance
*/
public StyledButtonCell(SafeHtmlRenderer<String> renderer) {
super(renderer, "click", "keydown");
}
@Override
public void onBrowserEvent(Context context, Element parent, String value,
NativeEvent event, ValueUpdater<String> valueUpdater) {
super.onBrowserEvent(context, parent, value, event, valueUpdater);
if ("click".equals(event.getType())) {
EventTarget eventTarget = event.getEventTarget();
if (!Element.is(eventTarget)) {
return;
}
if (parent.getFirstChildElement().isOrHasChild(Element.as(eventTarget))) {
// Ignore clicks that occur outside of the main element.
onEnterKeyDown(context, parent, value, event, valueUpdater);
}
}
}
@Override
public void render(Context context, SafeHtml data, SafeHtmlBuilder sb) {
sb.appendHtmlConstant("<button type=\"button\" tabindex=\"-1\"" + disabledString + ">");
if (data != null) {
sb.append(data);
}
sb.appendHtmlConstant("</button>");
}
@Override
protected void onEnterKeyDown(Context context, Element parent, String value,
NativeEvent event, ValueUpdater<String> valueUpdater) {
if (valueUpdater != null) {
valueUpdater.update(value);
}
}
public boolean isDisabled() {
return disabled;
}
public void setDisabled(boolean disabled) {
this.disabled = disabled;
if (disabled) {
disabledString = "disabled=\"disabled\"";
} else {
disabledString = "";
}
}
}
は、その後、あなたのセルテーブルでこれを使用します。
final StyledButtonCell buttonCell = new StyledButtonCell();
buttonColumn = new Column<SomeItem, String>(buttonCell) {
public String getValue(SomeItem object) {
// The value to display in the button.
return "Go";
}
};
単に呼び出し、ボタンを無効にするには:
buttonCell.setDisabled(true);
table.redraw();
ありがとう、素晴らしい仕事。あなたが1年後に答える質問を見つけて、答えが悪いことを見て、より良いものを取ることはいいことです。 "HasEnabled"インターフェースを作成し、 "isDisabled"と "setDisabled"の代わりに "isEnabled"と "setEnabled"という名前を付けてください。 – Stefan
https://github.com/pressgang-ccms/PressGangCCMSUI/blob/master/src/main/java/com/google/gwt/user/client/ui/DisableableButtonCell.javaは、私が使用したこれに関する少しのバリエーションです自分のプロジェクトで – Phyxx
を使用すると、 "名前の変更" する必要がない場合あなたのボタンを、あなたはまた、ブール抽象的なセルに基づいて独自に作成することができます:
public class CustomButtonCell extends AbstractEditableCell<Boolean, Boolean> {
private static final SafeHtml ENABLED = SafeHtmlUtils.fromSafeConstant("<button type=\"button\" tabindex=\"-1\">");
private static final SafeHtml DISABLED = SafeHtmlUtils.fromSafeConstant("<button type=\"button\" tabindex=\"-1\" disabled=\"disabled\">");
private static final SafeHtml CLOSE_BRACKET = SafeHtmlUtils.fromSafeConstant("</button>");
private final boolean dependsOnSelection;
private final boolean handlesSelection;
private final String text;
public CustomButtonCell(final String text) {
this(false, false, text);
}
public CustomButtonCell(boolean dependsOnSelection, boolean handlesSelection, String text) {
super(BrowserEvents.CHANGE, BrowserEvents.CLICK, BrowserEvents.KEYDOWN);
this.dependsOnSelection = dependsOnSelection;
this.handlesSelection = handlesSelection;
this.text = text;
}
@Override
public boolean dependsOnSelection() {
return dependsOnSelection;
}
@Override
public boolean handlesSelection() {
return handlesSelection;
}
@Override
public boolean isEditing(Context context, Element parent, Boolean value) {
return false;
}
/**
* Based on CheckboxCell
*/
@Override
public void onBrowserEvent(Context context, Element parent, Boolean value,
NativeEvent event, ValueUpdater<Boolean> valueUpdater) {
String type = event.getType();
boolean enterPressed = BrowserEvents.KEYDOWN.equals(type)
&& event.getKeyCode() == KeyCodes.KEY_ENTER;
if (BrowserEvents.CHANGE.equals(type) || BrowserEvents.CLICK.equals(type) || enterPressed) {
InputElement input = parent.getFirstChild().cast();
Boolean isChecked = input.isChecked();
if (enterPressed && (handlesSelection() || !dependsOnSelection())) {
isChecked = !isChecked;
input.setChecked(isChecked);
}
if (value != isChecked && !dependsOnSelection()) {
setViewData(context.getKey(), isChecked);
} else {
clearViewData(context.getKey());
}
if (valueUpdater != null) {
valueUpdater.update(isChecked);
}
}
}
@Override
public void render(Context context, Boolean value, SafeHtmlBuilder sb) {
// Get the view data.
Object key = context.getKey();
Boolean viewData = getViewData(key);
if (viewData != null && viewData.equals(value)) {
clearViewData(key);
viewData = null;
}
if (value != null && ((viewData != null) ? viewData : value)) {
sb.append(ENABLED);
} else {
sb.append(DISABLED);
}
sb.append(SafeHtmlUtils.fromString(text));
sb.append(CLOSE_BRACKET);
}
}
とCellWidgetsは通常、古典的なGWTウィジェット(すなわち、レンダリングしていないので、私はこれが仕事に行くされている場合わからないその「値を取得する」mechanisme
Column<TestJSO, Boolean> revokeColumn = CellTableUtils.createColumn(new CustomButtonCell("Test"),
new GetValue<TestJSO, Boolean>() {
@Override
public Boolean getValue(TestJSO value) {
return value.isEnabled();
}
});
- 1. セルテーブルhtmlでクリックイベントを無効にするにはどうすればよいですか?
- 2. GWT 2 ButtonCellを1行に追加イベント
- 3. Ehcache3を無効/無効にする
- 4. GWTセルテーブルの問題
- 5. GWTセルテーブルのDateTimeピッカー?
- 6. ComboBox javafxでButtonCellを設定するには?
- 7. Windowsキーを無効にするWindowsキーを無効にする
- 8. ToolStripMenuItemを無効にするかMenuStrip.Itemを無効にする
- 9. リフトを無効にするリフトを無効にする
- 10. ズームコントロールを無効にするピンチズームを無効にする
- 11. hrefを無効にする方法と無効にする
- 12. ngFormが無効のときにボタンを無効にする
- 13. GWTセルテーブルの列上のマウスオーバーイベント
- 14. ポインタを無効にするポインタの配列が無効です
- 15. 特定の画面のネイティブ無効DrawerNavigatorを無効にする
- 16. 抽象セルテーブルのGWT setSkipRowHoverCheck
- 17. IIS web.configを無効にしてリクエストフィルタリングを無効にする
- 18. ネイティブスクロールビューを無効にしてリフレッシュを無効にする
- 19. Macのダークモードを無効にするSwiftのOSXアプリケーションを無効にする
- 20. 無効なボタンのツールチップを無効にする
- 21. C#でWindows 10のホットキーを無効/無効にする方法
- 22. GtkMenu項目の一部を無効/無効にする方法
- 23. WebbrowserコントロールのJavascriptをInjectで無効/無効にする?
- 24. オートコンプリートのEnterキーを無効/無効にする方法は?
- 25. Glide v4.4メモリキャッシュとディスクキャッシュの無効化を無効にする
- 26. ビジュアルスタイル/テーマを単一のフォームで無効/無効にする
- 27. ボタンを無効にして無効にする
- 28. DOMMouseScrollマウスホイールを有効/無効にする
- 29. フォームラジオボタングループを無効/有効にする
- 30. @ConditionalOnExpression @RestControllerを有効/無効にする
ことによってそれを編集TextFieldまたはButton) –