本文整理匯總了Java中javax.swing.plaf.basic.BasicComboPopup類的典型用法代碼示例。如果您正苦於以下問題:Java BasicComboPopup類的具體用法?Java BasicComboPopup怎麽用?Java BasicComboPopup使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
BasicComboPopup類屬於javax.swing.plaf.basic包,在下文中一共展示了BasicComboPopup類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。
示例1: getItemPointToClick
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
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];
}
示例2: MaterialComboBox
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
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);
}
示例3: createPopup
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
@Override
protected ComboPopup createPopup() {
return new BasicComboPopup(comboBox) {
private static final long serialVersionUID = -1460253465809092623L;
@Override
protected void configurePopup() {
setBorderPainted(true);
setBorder(BorderFactory.createLineBorder(Template.COLOR_LIGHT_GRAY));
setOpaque(false);
add(scroller);
setFocusable(false);
}
};
}
示例4: lookupPopupItem
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
private int lookupPopupItem(String pattern, boolean select) {
BasicComboPopup popup = (BasicComboPopup) comboBox.getAccessibleContext().getAccessibleChild(0);
JList list = popup.getList();
int nextMatch = list.getNextMatch(pattern, 0, Position.Bias.Forward);
if (list.getSelectedIndex() > 0) {
nextMatch = nextMatch < 0 ? list.getNextMatch(pattern, list.getSelectedIndex(), Position.Bias.Backward) : nextMatch;
}
if (select) {
if (nextMatch >= 0) {
list.ensureIndexIsVisible(nextMatch);
list.setSelectedIndex(nextMatch);
} else {
list.getSelectionModel().clearSelection();
}
}
return nextMatch;
}
示例5: popupMenuWillBecomeVisible
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
/**
* 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);
}
});
}
}
示例6: customizePopup
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
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);
}
}
示例7: popupWider
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
private void popupWider(BasicComboPopup popup) {
@SuppressWarnings("unchecked")
JList<E> list = 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);
}
示例8: testGetMinimumSize
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
public void testGetMinimumSize() throws Exception {
ui.setComboBox(comboBox);
ComboPopup popup = new BasicComboPopup(comboBox);
ui.setPopup(popup);
ui.setListBox(popup.getList());
ui.installListeners();
comboBox.setBorder(BorderFactory.createEmptyBorder(4, 4, 4, 4));
Dimension listPart = new BasicComboBoxRenderer().getListCellRendererComponent(
popup.getList(), "", -1, false, false).getPreferredSize();
Dimension expectedSize = new Dimension(listPart.width + listPart.height + 8,
listPart.height + 8);
assertEquals(expectedSize, ui.getMinimumSize(null));
assertEquals(expectedSize, ui.getCachedMinimumSize());
ui.setCachedMinimumSize(new Dimension(100, 100));
assertEquals(ui.getCachedMinimumSize(), ui.getMinimumSize(null));
comboBox.addItem("aaa");
listPart = new BasicComboBoxRenderer().getListCellRendererComponent(popup.getList(),
"aaa", -1, false, false).getPreferredSize();
expectedSize = new Dimension(listPart.width + listPart.height + 8, listPart.height + 8);
assertEquals(expectedSize, ui.getMinimumSize(null));
}
示例9: popupMenuWillBecomeVisible
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
/**
* Alter the bounds of the popup just before it is made visible.
*/
@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(new Runnable() {
public void run() {
customizePopup((BasicComboPopup) child);
}
});
}
}
示例10: popupWider
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
protected void popupWider(BasicComboPopup popup) {
JList list = 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);
}
示例11: createPopup
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
@Override
protected ComboPopup createPopup() {
BasicComboPopup popup = new BasicComboPopup(comboBox) {
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public void show() {
Dimension popupSize = ((SteppedComboBox) comboBox).getPopupSize();
popupSize.setSize(popupSize.width, getPopupHeightForRowCount(comboBox.getMaximumRowCount()));
Rectangle popupBounds = computePopupBounds(0, comboBox.getBounds().height, popupSize.width, popupSize.height);
scroller.setMaximumSize(popupBounds.getSize());
scroller.setPreferredSize(popupBounds.getSize());
scroller.setMinimumSize(popupBounds.getSize());
list.invalidate();
int selectedIndex = comboBox.getSelectedIndex();
if (selectedIndex == -1) {
list.clearSelection();
} else {
list.setSelectedIndex(selectedIndex);
}
list.ensureIndexIsVisible(list.getSelectedIndex());
setLightWeightPopupEnabled(comboBox.isLightWeightPopupEnabled());
show(comboBox, popupBounds.x, popupBounds.y);
}
};
popup.getAccessibleContext().setAccessibleParent(comboBox);
return popup;
}
示例12: fireActiveDescendant
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
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);
}
}
}
}
示例13: getPopup
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
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");
}
示例14: createPopup
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
@Override
protected ComboPopup createPopup() {
BasicComboPopup popup = new BasicComboPopup(comboBox) {
@Override
protected Rectangle computePopupBounds(int px, int py, int pw, int ph) {
return super.computePopupBounds(px, py, Math.max(comboBox.getPreferredSize().width, pw), ph);
}
};
popup.getAccessibleContext().setAccessibleParent(comboBox);
return popup;
}
示例15: updateStateBoxColor
import javax.swing.plaf.basic.BasicComboPopup; //導入依賴的package包/類
/**
* Updates the color of the user state combo box
*/
private void updateStateBoxColor(){
ComboUserState.setForeground(state_colors[ComboUserState.getSelectedIndex()]);
Object child = ComboUserState.getAccessibleContext().getAccessibleChild(0);
BasicComboPopup popup = (BasicComboPopup)child;
JList list = popup.getList();
list.setSelectionForeground(state_colors[ComboUserState.getSelectedIndex()]);
list.setSelectionBackground(Color.WHITE);
}