public static void main(String... args) {
   EventQueue.invokeLater(
       new Runnable() {
         @Override
         public void run() {
           createAndShowGUI();
         }
       });
 }
 @Override
 public void popupMenuWillBecomeVisible(final PopupMenuEvent e) {
   EventQueue.invokeLater(
       new Runnable() {
         @Override
         public void run() {
           JComboBox combo = (JComboBox) e.getSource();
           Accessible a = combo.getAccessibleContext().getAccessibleChild(0);
           // Or Accessible a = combo.getUI().getAccessibleChild(combo, 0);
           if (a instanceof BasicComboPopup) {
             BasicComboPopup pop = (BasicComboPopup) a;
             Point p = new Point(combo.getSize().width, 0);
             SwingUtilities.convertPointToScreen(p, combo);
             pop.setLocation(p);
           }
         }
       });
 }