basically is popup for a JComboBox displayed below its derived JTextField, how can change direction from bellowed orientations for JComboBox\'s popup and display JComboBox\'
On Mac OS X, I get the following exception. Apparently, com.apple.laf.AquaComboBoxRenderer
is not a subclass of BasicComboBoxRenderer
.
Addendum: The ClassCastException
is gone, and a screen capture of "EDIT 2nd. Code for MacOX" appears below:
Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: com.apple.laf.AquaComboBoxRenderer cannot be cast to javax.swing.plaf.basic.BasicComboBoxRenderer at HighRowCombo.makeUI(HighRowCombo.java:26) at HighRowCombo$1.run(HighRowCombo.java:13) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:678) at java.awt.EventQueue.access$000(EventQueue.java:86) at java.awt.EventQueue$1.run(EventQueue.java:639) at java.awt.EventQueue$1.run(EventQueue.java:637) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:648) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
package com.example.swing;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
import java.awt.Component;
import java.awt.Dimension;
public class PaddingListCellRenderer<Type> implements ListCellRenderer<Type> {
private final ListCellRenderer original;
private final int hpadding;
private final int vpadding;
public PaddingListCellRenderer(ListCellRenderer original, int hpadding, int vpadding) {
this.original = original;
this.hpadding = hpadding;
this.vpadding = vpadding;
}
@Override
@SuppressWarnings("unchecked")
public Component getListCellRendererComponent(JList<? extends Type> list, Type value, int index, boolean isSelected, boolean cellHasFocus) {
final Component component = original.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
component.setPreferredSize(null);
final Dimension pref = component.getPreferredSize();
component.setPreferredSize(new Dimension(pref.width + 2 * hpadding, pref.height + 2 * vpadding));
return component;
}
}
Try the setPopupAbove() method found in Combo Box Popup.
On my system, a JComboBox
will open upwards if it is near the bottom of the screen and there is not enough space to open it downwards. (Is that what you meant?)
Given that fact, I doubt it would be easy to alter the defined behavior.