static int showNiceButtons_maxImageSize = 128; // params = text, image, action, text, image, action, ... // or TextImageAction... static DynamicHStack showNiceButtons(O... params) { DynamicHStack stack = dynamicHStack().spacing(20); for (int i = 0; i < l(params); ) { S text, imageID; O action; if (params[i] instanceof TextImageAction) { TextImageAction tia = params[i]/ImageTextAction; text = tia.text; imageID = tia.imageID; action = tia.action; i++; } else { text = str(get(params, i)); imageID = str(get(params, i+1)); action = get(params, i+2); i += 3; } JButton b = jImageAndTextButton(imageID, text, action); resizeImageButtonToMax(b, showNiceButtons_maxImageSize); setVerticalTextPosition(JButton.TOP, setFontSize(15, makeBold(b))); setVerticalAlignment(JButton.TOP, b); setMargin(10, b); stack.addComponent(b); } showCenterPackedFrame(withMargin(20, jscroll(jfullcenter(stack)))); ret stack; }