By referring to the answer at Multi Columns Combo Box for Swing, I manage to implement a 3 multi columns JComboBox as follow.
I had the same problem, so I created the following method
/**
*
* @param box is the ComboBox that is about to show its own popup menu
* @param metrics is used to calculate the width of your combo box's items
*/
public static void adjustPopupWidth(JComboBox box,FontMetrics metrics) {
if (box.getItemCount() == 0) {
return;
}
Object comp = box.getUI().getAccessibleChild(box, 0);
if (!(comp instanceof JPopupMenu)) {
return;
}
//Find which option is the most wide, to set this width as pop up menu's preferred!
int maxWidth=0;
for(int i=0;i