sclass JG22Label > SingleComponentPanel { G22Label label; JLabel jLabel; JTextField tf; *() { init(); } *(G22Label *label) { init(); } void init { if (label == null) { tf = jTextField(); onEnter(tf, rThread { doneEditing(getTextTrim(tf)) }); setComponent(tf); else { jLabel = jLabel(label.name); setComponent(jLabel); } } swappable void doneEditing(S text) {} }