@Override public TerminalSize getPreferredSize(final ComboBox<V> comboBox) { TerminalSize size = TerminalSize.ONE.withColumns( (comboBox.getItemCount() == 0 ? CJKUtils.getColumnWidth(comboBox.getText()) : 0) + 2); synchronized (comboBox) { for (int i = 0; i < comboBox.getItemCount(); i++) { V item = comboBox.getItem(i); size = size.max( new TerminalSize( CJKUtils.getColumnWidth(item.toString()) + 2 + 1, 1)); // +1 to add a single column of space } } return size; }