小编und*_*bis的帖子

JavaFX Beans Binding突然停止工作

我使用JavaFX NumberBindings来计算某些值.最初一切都按预期工作.然而,在相当少的时间之后,绑定才停止工作.我也没有收到异常.

我尝试了几种绑定,以及高级和低级方法.即使计算本身(被覆盖时)也会停止并且不再被调用.我还更新了最新的JDK(1.8.0_05)并重建/重新启动了所有内容.

以下最小工作示例说明了该问题.它应该将System.out.println当前主窗口的宽度改为STDOUT.调整窗口大小约10秒后,输出就会停止.我还尝试将结果属性绑定到JavaFX控件,以确保Property继续使用,但这无济于事.我相信我在这里遗漏了一些非常基本的Property/Bindings行为,谷歌似乎根本不知道这种行为.

import javafx.application.Application;
import javafx.beans.binding.NumberBinding;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class BindingsProblem extends Application {

@Override
public void start(Stage primaryStage) {
    // Initialization...
    StackPane root = new StackPane();
    Scene scene = new Scene(root, 300, 250);
    primaryStage.setScene(scene);
    primaryStage.show();


    // Binding - The problem occurrs here!
    NumberBinding currentWidthPlusTen = primaryStage.widthProperty().add(10);
    IntegerProperty boundNumberProperty = new SimpleIntegerProperty();
    boundNumberProperty.bind(currentWidthPlusTen);
    boundNumberProperty.addListener(new ChangeListener<Number>() {

        @Override
        public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number …
Run Code Online (Sandbox Code Playgroud)

java binding javafx properties javabeans

10
推荐指数
1
解决办法
2056
查看次数

Swing JFrame导致JavaFX应用程序在OS X上崩溃

我正在开发一个复杂的JavaFX项目,它应该包含Swing JFrames.一切正常,JFrame然而在某些条件下拒绝关闭,锁定整个VM.我把所有东西都煮到了最低限度的工作示例,这似乎适用于Windows(请确认它是否适用于您的计算机)但可靠地崩溃OS X. 我正在使用Java 8u25(最新稳定版)和8u40预览版(最新版本) - 没有区别.

如何重现:将程序保存为"JavaFXWithJFrames.java",编译并运行它.现在有3个Swing JFrame和1个带3个按钮的JavaFX窗口.单击按钮应分别关闭其中一个窗口.这适用于Windows(?),但完全锁定OS X上的程序(可能还有其他操作系统?)

你能复制一下吗?是/否,哪台机器/ OS/JRE?我在这里做错了什么 - 线程问题?非常感谢你的帮助.

关于pastebin的代码:http://pastebin.com/tUrdNfCw# - 请保存为"JavaFXWithJFrames.java"进行编译!

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
//package javafxwithjframes;

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import javax.swing.JFrame;

/**
 * When starting, a JavaFX window …
Run Code Online (Sandbox Code Playgroud)

java macos swing javafx

3
推荐指数
1
解决办法
996
查看次数

标签 统计

java ×2

javafx ×2

binding ×1

javabeans ×1

macos ×1

properties ×1

swing ×1