sclass ImageMachine { JTextField tf; SingleComponentPanel scp; ImageSurface is; Q q; volatile bool boss; // boss mode (after pressing Escape) void start() { final S word = randomEnglishWord(); swing { q = new Q(true); showMaximizedFrame("Automatic Image Machine!", northAndCenter(tf = setTextFieldFontSize(jCenteredTextField(word), 20), scp = new SingleComponentPanel)); // Escape = Boss Key! registerEscape(getFrame(tf), r { boss = true; tf.setText(""); scp.noComponent(); }); onEnterAndNow(tf, r { boss = false; awt { tf.selectAll(); } final S text = getTextTrim(tf); q.add(r { if (boss) ret; long time = sysNow(); loading { final BufferedImage img = quickVisualize(text); if (boss) ret; awt { newImage(text, img); } } sleepUntilSys(time+1000); // min display time }); }); hideConsole(); } } void newImage(S text, BufferedImage img) { JLabel lbl = jcenteredlabel(text); lbl.setFont(sansSerifBold(20)); scp.setComponent(centerAndSouth( jscroll_centered(is = new ImageSurface(img)), lbl); awt { is.zoomToWindow(); } } }