类javax.swing.plaf.basic.BasicComboPopup源码实例Demo

下面列出了怎么用javax.swing.plaf.basic.BasicComboPopup的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: openAGV   文件: BoundsPopupMenuListener.java
/**
 * Adjusts the width of the scrollpane used by the popup.
 */
protected void popupWider(BasicComboPopup popup) {
  JList<?> list = popup.getList();

  //  Determine the maximimum width to use:
  //  a) determine the popup preferred width
  //  b) ensure width is not less than the scroll pane width
  int popupWidth = list.getPreferredSize().width
      + 5 // make sure horizontal scrollbar doesn't appear
      + getScrollBarWidth(popup, scrollPane);

  Dimension scrollPaneSize = scrollPane.getPreferredSize();
  popupWidth = Math.max(popupWidth, scrollPaneSize.width);

  //  Adjust the width
  scrollPaneSize.width = popupWidth;
  scrollPane.setPreferredSize(scrollPaneSize);
  scrollPane.setMaximumSize(scrollPaneSize);
}
 
源代码2 项目: dragonwell8_jdk   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码3 项目: TencentKona-8   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码4 项目: xdm   文件: XDMComboBoxUI.java
@Override
protected ComboPopup createPopup() {
	return new BasicComboPopup(comboBox) {
		/**
		 * 
		 */
		private static final long serialVersionUID = -4232501153552563408L;

		@Override
		protected JScrollPane createScroller() {
			JScrollPane scroller = new JScrollPane(list, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
					JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
			scroller.setVerticalScrollBar(new DarkScrollBar(JScrollBar.VERTICAL));
			return scroller;
		}
	};
}
 
源代码5 项目: jdk8u60   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码6 项目: openjdk-jdk8u   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码7 项目: openjdk-jdk8u-backup   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码8 项目: openjdk-jdk9   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码9 项目: jdk8u-jdk   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码10 项目: hottub   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码11 项目: jdk8u_jdk   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码12 项目: swing-material   文件: MaterialComboBox.java
public MaterialComboBox() {
    setModel(new DefaultComboBoxModel<T>());
    setRenderer(new FieldRenderer<T>(this));
    setUI(new BasicComboBoxUI() {
        @Override
        protected ComboPopup createPopup() {
            BasicComboPopup popup = new Popup(comboBox);
            popup.getAccessibleContext().setAccessibleParent(comboBox);
            return popup;
        }

        @Override
        protected JButton createArrowButton() {
            JButton button = new javax.swing.plaf.basic.BasicArrowButton(
                    javax.swing.plaf.basic.BasicArrowButton.SOUTH,
                    MaterialColor.TRANSPARENT,
                    MaterialColor.TRANSPARENT,
                    MaterialColor.TRANSPARENT,
                    MaterialColor.TRANSPARENT);
            button.setName("ComboBox.arrowButton");
            return button;
        }
    });
    setOpaque(false);
    setBackground(MaterialColor.TRANSPARENT);
}
 
/**
 * Creates a grayed out version of the loading gif that can be used in a combobox through an image observer
 *
 * @since 9.2.0
 */
private static ImageIcon makeLoadingIcon(JComboBox comboBox) {
	ImageIcon icon = new ImageIcon(LOADING_ICON);
	icon.setImageObserver((img, infoflags, x, y, w, h) -> {
		boolean isFrameOrAll = (infoflags & (ImageObserver.FRAMEBITS | ImageObserver.ALLBITS)) != 0;
		if (!comboBox.isShowing() || !isFrameOrAll) {
			return !isFrameOrAll;
		}
		if (comboBox.getSelectedIndex() == 0) {
			comboBox.repaint();
		}
		BasicComboPopup p = (BasicComboPopup) comboBox.getAccessibleContext().getAccessibleChild(0);
		JList list = p.getList();
		if (list.isShowing()) {
			list.repaint();
		}
		return true;
	});
	return icon;
}
 
源代码14 项目: jdk8u-jdk   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码15 项目: jdk8u-dev-jdk   文件: MouseComboBoxTest.java
private static Point getItemPointToClick(final int item) throws Exception {
    final Point[] result = new Point[1];

    SwingUtilities.invokeAndWait(new Runnable() {
        @Override
        public void run() {
            BasicComboPopup popup = (BasicComboPopup)comboBoxUI.getComboPopup();
            Point point = popup.getLocationOnScreen();
            Dimension size = popup.getSize();

            int step = size.height / items.length;
            point.x += size.width / 2;
            point.y += step / 2 + step * item;
            result[0] = point;
        }
    });
    return result[0];
}
 
源代码16 项目: Juicebox   文件: BoundsPopupMenuListener.java
/**
 * Alter the bounds of the popup just before it is made visible.
 */
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
    @SuppressWarnings("unchecked")
    JComboBox<E> comboBox = (JComboBox<E>) e.getSource();

    if (comboBox.getItemCount() == 0) return;

    final Object child = comboBox.getAccessibleContext().getAccessibleChild(0);

    if (child instanceof BasicComboPopup) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                customizePopup((BasicComboPopup) child);
            }
        });
    }
}
 
源代码17 项目: Juicebox   文件: BoundsPopupMenuListener.java
private void customizePopup(BasicComboPopup popup) {
    scrollPane = getScrollPane(popup);

    if (popupWider)
        popupWider(popup);

    checkHorizontalScrollBar(popup);

    //  For some reason in JDK7 the popup will not display at its preferred
    //  width unless its location has been changed from its default
    //  (ie. for normal "pop down" shift the popup and reset)

    Component comboBox = popup.getInvoker();
    Point location = comboBox.getLocationOnScreen();

    if (popupAbove) {
        int height = popup.getPreferredSize().height;
        popup.setLocation(location.x, location.y - height);
    } else {
        //int height = comboBox.getPreferredSize().height;
        //popup.setLocation(location.x, location.y + height - 1);
        //popup.setLocation(location.x, location.y + height);
        //TODO should not be hardcoded
        popup.setLocation(location.x + 5, location.y + 35);
    }
}
 
源代码18 项目: Juicebox   文件: BoundsPopupMenuListener.java
private void popupWider(BasicComboPopup popup) {
    @SuppressWarnings("unchecked")
    JList<E> list = (JList<E>) popup.getList();

    //  Determine the maximimum width to use:
    //  a) determine the popup preferred width
    //  b) limit width to the maximum if specified
    //  c) ensure width is not less than the scroll pane width

    int popupWidth = list.getPreferredSize().width
            + 5  // make sure horizontal scrollbar doesn't appear
            + getScrollBarWidth(popup, scrollPane);

    if (maximumWidth != -1) {
        popupWidth = Math.min(popupWidth, maximumWidth);
    }

    Dimension scrollPaneSize = scrollPane.getPreferredSize();
    popupWidth = Math.max(popupWidth, scrollPaneSize.width);

    //  Adjust the width

    scrollPaneSize.width = popupWidth;
    scrollPane.setPreferredSize(scrollPaneSize);
    scrollPane.setMaximumSize(scrollPaneSize);
}
 
源代码19 项目: openAGV   文件: BoundsPopupMenuListener.java
/**
 * Alter the bounds of the popup just before it is made visible.
 *
 * @param e The event.
 */
@Override
public void popupMenuWillBecomeVisible(PopupMenuEvent e) {
  JComboBox<?> comboBox = (JComboBox) e.getSource();
  if (comboBox.getItemCount() == 0) {
    return;
  }
  final Object child = comboBox.getAccessibleContext().getAccessibleChild(0);

  if (child instanceof BasicComboPopup) {
    SwingUtilities.invokeLater(() -> customizePopup((BasicComboPopup) child));
  }
}
 
源代码20 项目: openAGV   文件: BoundsPopupMenuListener.java
protected void customizePopup(BasicComboPopup popup) {
  scrollPane = getScrollPane(popup);
  popupWider(popup);

  //  For some reason in JDK7 the popup will not display at its preferred
  //  width unless its location has been changed from its default
  //  (ie. for normal "pop down" shift the popup and reset)
  Component comboBox = popup.getInvoker();
  Point location = comboBox.getLocationOnScreen();

  int height = comboBox.getSize().height;
  popup.setLocation(location.x, location.y + height - 1);
  popup.setLocation(location.x, location.y + height);
}
 
源代码21 项目: openAGV   文件: BoundsPopupMenuListener.java
/**
 * Returns the scroll pane used by the popup so its bounds can be adjusted.
 */
protected JScrollPane getScrollPane(BasicComboPopup popup) {
  JList<?> list = popup.getList();
  Container c = SwingUtilities.getAncestorOfClass(JScrollPane.class, list);

  return (JScrollPane) c;
}
 
源代码22 项目: openAGV   文件: BoundsPopupMenuListener.java
protected int getScrollBarWidth(BasicComboPopup popup, JScrollPane scrollPane) {
  // I can't find any property on the scrollBar to determine if it will be
  // displayed or not so use brute force to determine this.
  JComboBox<?> comboBox = (JComboBox) popup.getInvoker();

  if (comboBox.getItemCount() > comboBox.getMaximumRowCount()) {
    return scrollPane.getVerticalScrollBar().getPreferredSize().width;
  }
  else {
    return 0;
  }
}
 
源代码23 项目: jdk1.8-source-analysis   文件: JPopupMenu.java
private void fireActiveDescendant() {
    if (JPopupMenu.this instanceof BasicComboPopup) {
        // get the popup list
        JList<?> popupList = ((BasicComboPopup)JPopupMenu.this).getList();
        if (popupList == null) {
            return;
        }

        // get the first selected item
        AccessibleContext ac = popupList.getAccessibleContext();
        AccessibleSelection selection = ac.getAccessibleSelection();
        if (selection == null) {
            return;
        }
        Accessible a = selection.getAccessibleSelection(0);
        if (a == null) {
            return;
        }
        AccessibleContext selectedItem = a.getAccessibleContext();

        // fire the event with the popup invoker as the source.
        if (selectedItem != null && invoker != null) {
            AccessibleContext invokerContext = invoker.getAccessibleContext();
            if (invokerContext != null) {
                // Check invokerContext because Component.getAccessibleContext
                // returns null. Classes that extend Component are responsible
                // for returning a non-null AccessibleContext.
                invokerContext.firePropertyChange(
                    ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
                    null, selectedItem);
            }
        }
    }
}
 
源代码24 项目: FlatLaf   文件: FlatComboBoxUI.java
@Override
protected PropertyChangeListener createPropertyChangeListener() {
	return new BasicComboPopup.PropertyChangeHandler() {
		@Override
		public void propertyChange( PropertyChangeEvent e ) {
			super.propertyChange( e );

			if( e.getPropertyName() == "renderer" )
				list.setCellRenderer( new PopupListCellRenderer() );
		}
	};
}
 
源代码25 项目: dragonwell8_jdk   文件: JPopupMenu.java
private void fireActiveDescendant() {
    if (JPopupMenu.this instanceof BasicComboPopup) {
        // get the popup list
        JList<?> popupList = ((BasicComboPopup)JPopupMenu.this).getList();
        if (popupList == null) {
            return;
        }

        // get the first selected item
        AccessibleContext ac = popupList.getAccessibleContext();
        AccessibleSelection selection = ac.getAccessibleSelection();
        if (selection == null) {
            return;
        }
        Accessible a = selection.getAccessibleSelection(0);
        if (a == null) {
            return;
        }
        AccessibleContext selectedItem = a.getAccessibleContext();

        // fire the event with the popup invoker as the source.
        if (selectedItem != null && invoker != null) {
            AccessibleContext invokerContext = invoker.getAccessibleContext();
            if (invokerContext != null) {
                // Check invokerContext because Component.getAccessibleContext
                // returns null. Classes that extend Component are responsible
                // for returning a non-null AccessibleContext.
                invokerContext.firePropertyChange(
                    ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
                    null, selectedItem);
            }
        }
    }
}
 
源代码26 项目: dragonwell8_jdk   文件: bug4743225.java
public static BasicComboPopup getPopup() {
    AccessibleContext c = cb.getAccessibleContext();
    for(int i = 0; i < c.getAccessibleChildrenCount(); i ++) {
        if (c.getAccessibleChild(i) instanceof BasicComboPopup) {
            return (BasicComboPopup) c.getAccessibleChild(i);
        }
    }
    throw new AssertionError("No BasicComboPopup found");
}
 
源代码27 项目: TencentKona-8   文件: JPopupMenu.java
private void fireActiveDescendant() {
    if (JPopupMenu.this instanceof BasicComboPopup) {
        // get the popup list
        JList<?> popupList = ((BasicComboPopup)JPopupMenu.this).getList();
        if (popupList == null) {
            return;
        }

        // get the first selected item
        AccessibleContext ac = popupList.getAccessibleContext();
        AccessibleSelection selection = ac.getAccessibleSelection();
        if (selection == null) {
            return;
        }
        Accessible a = selection.getAccessibleSelection(0);
        if (a == null) {
            return;
        }
        AccessibleContext selectedItem = a.getAccessibleContext();

        // fire the event with the popup invoker as the source.
        if (selectedItem != null && invoker != null) {
            AccessibleContext invokerContext = invoker.getAccessibleContext();
            if (invokerContext != null) {
                // Check invokerContext because Component.getAccessibleContext
                // returns null. Classes that extend Component are responsible
                // for returning a non-null AccessibleContext.
                invokerContext.firePropertyChange(
                    ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
                    null, selectedItem);
            }
        }
    }
}
 
源代码28 项目: TencentKona-8   文件: bug4743225.java
public static BasicComboPopup getPopup() {
    AccessibleContext c = cb.getAccessibleContext();
    for(int i = 0; i < c.getAccessibleChildrenCount(); i ++) {
        if (c.getAccessibleChild(i) instanceof BasicComboPopup) {
            return (BasicComboPopup) c.getAccessibleChild(i);
        }
    }
    throw new AssertionError("No BasicComboPopup found");
}
 
源代码29 项目: jdk8u60   文件: JPopupMenu.java
private void fireActiveDescendant() {
    if (JPopupMenu.this instanceof BasicComboPopup) {
        // get the popup list
        JList<?> popupList = ((BasicComboPopup)JPopupMenu.this).getList();
        if (popupList == null) {
            return;
        }

        // get the first selected item
        AccessibleContext ac = popupList.getAccessibleContext();
        AccessibleSelection selection = ac.getAccessibleSelection();
        if (selection == null) {
            return;
        }
        Accessible a = selection.getAccessibleSelection(0);
        if (a == null) {
            return;
        }
        AccessibleContext selectedItem = a.getAccessibleContext();

        // fire the event with the popup invoker as the source.
        if (selectedItem != null && invoker != null) {
            AccessibleContext invokerContext = invoker.getAccessibleContext();
            if (invokerContext != null) {
                // Check invokerContext because Component.getAccessibleContext
                // returns null. Classes that extend Component are responsible
                // for returning a non-null AccessibleContext.
                invokerContext.firePropertyChange(
                    ACCESSIBLE_ACTIVE_DESCENDANT_PROPERTY,
                    null, selectedItem);
            }
        }
    }
}
 
源代码30 项目: jdk8u60   文件: bug4743225.java
public static BasicComboPopup getPopup() {
    AccessibleContext c = cb.getAccessibleContext();
    for(int i = 0; i < c.getAccessibleChildrenCount(); i ++) {
        if (c.getAccessibleChild(i) instanceof BasicComboPopup) {
            return (BasicComboPopup) c.getAccessibleChild(i);
        }
    }
    throw new AssertionError("No BasicComboPopup found");
}
 
 类所在包
 类方法
 同包方法