FXのApplicationのスレッドで、StaticなStageを操作しようとすると、
なんのエラーも出ずに、それっきり処理が止まってしまいます…
以下のようなソースで(packageは省略)、
java
1import javafx.stage.*; 2import javafx.application.*; 3import javafx.concurrent.Task; 4 5public class MyClass extends Application{ 6 7 @Override 8 public void start(Stage stage) throws Exception { 9 Task<Void> task = new Task<Void>() { 10 @Override 11 protected Void call() throws Exception { 12 while(true){ 13 14 System.out.println("running"); 15 16 /* 17 TestClassのflagが変わるような処理 18 */ 19 TestClass.show(); 20 } 21 } 22 }; 23 24 TestClass.setup(stage); 25 new Thread(task).start(); 26 } 27 28 static public void main(String[] args) { 29 launch(args); 30 } 31 32/* 実際は別ファイル */ 33 34public class TestClass extends Stage{ 35 36 public TestClass (Stage primaryStage) { 37 initModality(Modality.NONE); 38 initOwner(primaryStage); 39 40 setWidth(400); 41 setHeight(500); 42 43 44 // 新しいウインドウ内に配置するコンテンツを生成 45 HBox hbox = new HBox(); 46 Label label = new Label("テスト"); 47 label.setFont(new Font(20d)); 48 hbox.getChildren().add(label); 49 50 setScene(new Scene(hbox)); 51 52 //ここに 53 //show(); 54 //を記述する分には問題なく表示される。 55 } 56 57 public static Stage stage1; 58 public static boolean flag= false; //trueにして試してみてください 59 60 public static void setup(Stage primaryStage){ 61 stage1= new TestClass(primaryStage); 62 } 63 64 public static void open(){ 65 if(flag)Input.show(); 66 flag = false; 67 } 68 69 } 70 71} 72 73 74
「running」と出力されなくなり、処理がそこでストップしてしまいます。
意味が分からず、かなり苦戦しております…
ご助力願います。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/29 13:35
2015/11/29 13:52
2015/11/29 13:52
2015/11/29 13:53