Java如何将具体点的状态码绑定在按钮上,比如,正常为0,锁定为1,删除为9,锁定和删除走同一个方法?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java如何将具体点的状态码绑定在按钮上,比如,正常为0,锁定为1,删除为9,锁定和删除走同一个方法?相关的知识,希望对你有一定的参考价值。

数据的状态 0为正常,1为锁定,9为删除。删除和锁定走同一个方法,锁定和删除做两个按钮,点击锁定按钮,传状态码为1 进行锁定操作。点击删除按钮,传状态码为2进行删除操作。如何将状态码绑定在按钮上呢

addEventListener添加按钮事件。你希望点哪个按钮就写他的事件。
然后调用你的方法分别传0、1、9
参考技术A 嗯这个事情啊其实们才能的啦如果,如果我说的有差有唔着花钱再去百度上搜一下唔番五番谢谢。就是难鼠标点击右键然后在右边第一个点结束来然后,在市里你约找到一个蓝色的小时候然后点eg开它之后点击所地质厂里然后什么的之类的然后就好的啦。

如何将Java ChangeListener添加到方法返回

我有一个带有“中止”按钮的任务控制GUI,它可以调用一些取消代码(工作正常)。但是,我想将按钮的禁用状态同步到任务是否正在运行,因此如果任务未运行,则禁用该选项。我可以通过它的Boolean Future.isDone()方法检查任务的状态,但我想让JavaFX通过绑定属性自动管理状态。但是我无法弄清楚如何建立绑定,或者在方法上设置ChangeListener。任何人都可以建议如何最好地完成?

编辑:我认为这个问题最终会提炼到“如何将Future.isDone()包装成一个Observable?”

非常感谢指导。

答案

使用Task。您可以观察state属性来修改Button的禁用属性:

private ExecutorService service;

@Override
public void stop() throws Exception {
    service.shutdownNow();
}

@Override
public void init() throws Exception {
    service = Executors.newSingleThreadScheduledExecutor();
    // service = new ThreadPoolExecutor(1, 2, 1, TimeUnit.SECONDS, new ArrayBlockingQueue<>(10));
}

@Override
public void start(Stage primaryStage) {
    Button startButton = new Button("Start");

    Task<Void> task = new Task<Void>() {

        @Override
        protected Void call() throws Exception {
            Thread.sleep(5000);
            System.out.println("task finished");
            return null;
        }

    };

    Button cancelButton = new Button("cancel");
    cancelButton.setOnAction(evt -> task.cancel());
    cancelButton.setDisable(true); // button disabled before submitting task

    startButton.setOnAction((ActionEvent event) -> {
        startButton.setDisable(true);

        // cancel Button enabled until task is succeeded/failed/was cancelled
        cancelButton.disableProperty().bind(Bindings.createBooleanBinding(() -> {
            switch (task.getState()) {
                case CANCELLED:
                case FAILED:
                case SUCCEEDED:
                    return true;
                default:
                    return false;
            }
        }, task.stateProperty()));

        // simulate some work to be done by the service
        service.submit(() -> {
            try {
                Thread.sleep(5000);
            } catch (InterruptedException ex) {
            }
            System.out.println("runnable finished");
        });
        service.submit(task);
    });

    // show state as text
    Text text = new Text();
    text.textProperty().bind(task.stateProperty().asString());

    VBox root = new VBox(10, startButton, cancelButton, text);

    Scene scene = new Scene(root, 300, 300);

    primaryStage.setScene(scene);
    primaryStage.show();
}
另一答案

解决了,或者足够好。 GUI控件绑定到SimpleBooleanProperty。构造函数启动一个后台线程Runnable,它在无限循环中轮询isDone()并进行半秒睡眠并更新绑定的SBP。再次感谢fabian,为我指出一个适当的解决方案,以备将来参考。

以上是关于Java如何将具体点的状态码绑定在按钮上,比如,正常为0,锁定为1,删除为9,锁定和删除走同一个方法?的主要内容,如果未能解决你的问题,请参考以下文章

TouchEvent里的targetTouchestoucheschangedTouches的区别的具体体现是?

关于在Arcgis上显示GPS上的点的有关问题

使用状态栏将鼠标悬停在按钮上

将 [VisualStateManager] 视图状态绑定到 MVVM 视图模型?

一次ajax请求导致status为canceled的原因

Java如何根据TimeZone转换时间,可以给出相关的例子吗?谢谢