私はJavaFXの中に同じ「タイプ」の無効複数のボタンにしたいです。例えば、私は別の操作用ボタンを複数キャンセルしているが、私は有効にする/無効にそれらをすべて同時にたいと思いますが、私がLinkedListの内部でそれらにアクセスすることはできませんようです。
スタートを押した場合は、以下の「最小および再現性」の例では、それは(FXMLでデフォルトでは無効)、キャンセルボタンを有効にする必要がありますが、それはしていません。
DemoController.java
public class DemoController {
@FXML
Button startBtn;
@FXML
Button cancelBtn1; // disabled by default
@FXML
Button cancelBtn2; // disabled by default
@FXML
Tab tab1;
public SDK sdk;
List<Node> cancelBtnGroup = new LinkedList<Node>();
public void initialize() {
cancelBtnGroup.add(cancelBtn1);
cancelBtnGroup.add(cancelBtn2);
startBtn.setOnAction(event -> {
tab1.setDisable(true);
startBtn.setDisable(true);
System.out.println("Disabling cancel buttons");
HashMap<String, String> test = new HashMap<String, String>();
test.put("disableCancel", "false");
sdk.onEvent(test);
});
initializeSDK();
}
public void initializeSDK() {
sdk = new SDK() {
@Override
public void onEvent(HashMap<String, String> e) {
if(e.containsKey("disableCancel")) {
for(Node btn : cancelBtnGroup) {
btn.setDisable(Boolean.parseBoolean(e.get("disableCancel")));
}
}
}
};
}
}
私が何とかボタンを上書きしてるようですが、私はどのように表示されません。私はいくつかの機能の内部で範囲を理解していないんだような気がします。私は、なぜ得ることを非常に何かを明らかに欠けているそうだとすれば、単純化され、可能な限り読みやすいように、コードを作ってみました。SDKオブジェクトは、私は名前を変更した問題ではなかったことを確認するために、同じ名前のオブジェクトが含まれていません。
問題は、私はそれにすべてのボタンを無効にするタブを無効にしていますということでした。私は2つのボタン、無効とにかくを取得しているのいずれかを持っているので、私はそれに気付かなかったが、他はいけません。ボタンだけで応答されなかったようだった私にはそう。
解決
削除する
tab1.setDisable(true)
ユーザーがタブを切り替えることができませんでし半ば運転だから、私はすべてのタブを無効にして、私はあなたが現在のタブを無効にした場合、それはまた、ボタンを無効にすることを忘れてしまいました。
私は助けを@Slawに感謝したいと私の態度に我慢します。(私は同じ迷惑投稿回答について素因持っているので、私は、前にSO回数が多すぎると迷惑な経験を持っていたリンクを 1000倍に。「私は、私は、最小限の再現性の例を必要と知っているが、それはあなたの場合に特にやることは容易常にではありません再外部SDK、すでに大規模なコードでの作業。私はそれが最小限で再現可能にするためにしようとしていました。