JavaFXのバグ、その1

2018年7月24日

JavaFXのバグを発見した。1.8.0では正常だが、10.0.2では発現する。Java9でどうかは確認していない。

再現コード

再現コードは以下である。なお、Oracleのバグデータベースにも報告してある。https://bugs.java.com/view_bug.do?bug_id=JDK-8208078だ。

import javafx.application.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.*;

public class Sample extends Application {

  public void start(Stage stage) throws Exception {   
    FlowPane flowPane = new FlowPane();
    Button one = new Button("one");
    one.setDisable(true);
    Button two = new Button("two");
    two.setOnAction(e->one.setDisable(false));
    Label label = new Label(System.getProperty("java.version"));
    flowPane.getChildren().addAll(one, two, label); 
    Dialog<?> dialog = new Dialog<>();
    dialog.getDialogPane().setContent(flowPane);
    dialog.show();
  }

  public static void main(String[] args) {  
    Application.launch(Sample.class, args);
  }
}

現象

ここで、ボタン「one」はdisabled状態になっており、「two」をクリックすると「one」をenableにする。

1.8.0では正常に動作し、oneがenabled状態に描画されるが、10.0.2ではdisabled描画のまま。しかし、実際にはenable状態になっており、クリックが可能になる。