JComboBox change drop-down popup

后端 未结 4 1076
傲寒
傲寒 2020-12-06 14:47

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\'

相关标签:
4条回答
  • 2020-12-06 15:06

    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:

    enter image description here

    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)
    
    0 讨论(0)
  • 2020-12-06 15:08
    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;
        }
    }
    
    0 讨论(0)
  • 2020-12-06 15:09

    Try the setPopupAbove() method found in Combo Box Popup.

    0 讨论(0)
  • 2020-12-06 15:21

    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.

    0 讨论(0)
提交回复
热议问题