Add the header created by
JLabel
and the clickable footer created by
JMenuItem
in the drop-down list of
JComboBox
Code
class HeaderFooterComboPopup extends BasicComboPopup {
protected transient JLabel header;
protected transient JMenuItem footer;
public HeaderFooterComboPopup(JComboBox combo) {
super(combo);
}
@Override protected void configurePopup() {
super.configurePopup();
configureHeader();
configureFooter();
add(header, 0);
add(footer);
}
protected void configureHeader() {
header = new JLabel("History");
header.setBorder(BorderFactory.createEmptyBorder(4, 5, 4, 0));
header.setMaximumSize(new Dimension(Short.MAX_VALUE, 20));
header.setAlignmentX(1f);
}
protected void configureFooter() {
int modifiers = InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK;
footer = new JMenuItem("Show All Bookmarks");
footer.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, modifiers));
footer.addActionListener(e -> {
Window w = SwingUtilities.getWindowAncestor(getInvoker());
JOptionPane.showMessageDialog(w, "Bookmarks");
});
}
}
References