実行内容を順番に表示させるログを、swingのフレーム内に表示しようと思っています。
そこで、
java
1 2//略 3 4JPanel base = new JPanel(); 5base.setLayout(new BoxLayout(base, BoxLayout.Y_AXIS)); 6frame.add(base); 7 8//略 9 10if(new File("フォルダ").mkdir()) base.add(new JLabel("フォルダを作成")); 11else base.add(new JLabel("フォルダの作成に失敗")); 12 13 14//略 15
という具合に作ってみると、全て成功した時だけ最後にまとめて出力され、失敗してどこかで例外などがあるとなにも出力されずに処理が止まります。
この、base.add(new JLabel("表示内容"));
をSystem.out.println("表示内容");
にすると処理中にリアルタイムで表示するので例外があってもどこなのかわかりますが、フレームに表示させないとユーザーが見られません。
一応、while文やswingのTimerを使って試してみましたがうまくいきません。
java
1static boolean bool = false; 2static String str = ""; 3 4public static main(String[] args){ 5 6 while(true){ 7 8 if(bool)base.add(new JLabel("str")); 9 System.out.println(str); 10 bool = false; 11 } 12} 13 14private static void dispText(String text){ 15 16 str = text; 17 bool = true; 18}
等。
なぜSystem.out.println()では処理中に表示できるのにbase.add(new JLabel())ではできないのでしょうか?
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。