title: JComboBox determine if Items are/aren't visible in drop-down list
body: <p>I tried to determime for every Items if are or not visible in the JViewPort from JComboBox drop-down list</p>
  
  <p>(my Friday OT)</p>
  
  <p>EDIT: I don't want to implements MouseListener for Repeats events to System.out.print(...)</p>
  
  <p>isn't possible pass JComboBox with JList, declared by JCombo#Model by using SwingUtilities <a href="http://download.oracle.com/javase/6/docs/api/javax/swing/SwingUtilities.html" rel="nofollow">http://download.oracle.com/javase/6/docs/api/javax/swing/SwingUtilities.html</a> , but this APi is out of my... </p>
  
  <pre><code>import java.awt.*;
  import java.awt.event.*;
  import javax.swing.*;
  
  public class ItemVisibleRecCombo extends JFrame {
  
      private static final long serialVersionUID = 1L;
      private JComboBox fontsBox;
  
      public ItemVisibleRecCombo() {
          String[] numbers = {"one", "two", "three", "four", "five", "six", "seven"};
          fontsBox = new JComboBox(numbers);
          fontsBox.setSelectedItem(0);
          fontsBox.addItemListener(new ItemListener() {
  
              @Override
              public void itemStateChanged(ItemEvent e) {
                  if (e.getStateChange() == ItemEvent.SELECTED) {
                      manItemInCombo();
                  }
              }
          });
          fontsBox.setModel(new DefaultComboBoxModel(numbers));
          fontsBox.setMaximumRowCount(3);
          add(fontsBox, BorderLayout.CENTER);
          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          setPreferredSize(new Dimension(400, 60));
          setLocation(200, 105);
          pack();
          setVisible(true);
      }
  
      private void manItemInCombo() {
          if (fontsBox.getItemCount() &gt; 0) {
              final Object comp = fontsBox.getUI().getAccessibleChild(fontsBox, 0);
              if ((comp instanceof JPopupMenu)) {
                  final JList list = new JList(fontsBox.getModel());
                  final JPopupMenu popup = (JPopupMenu) comp;
                  final JScrollPane scrollPane = (JScrollPane) popup.getComponent(0);
                  final JViewport viewport = scrollPane.getViewport();
                  final Rectangle rect = popup.getVisibleRect();
                  Point pt = viewport.getViewPosition();
                  for (int i = 0; i &lt; list.getModel().getSize(); i++) {
                      pt = list.indexToLocation(i);
                      System.out.print(pt + " - ");
                      rect.setLocation(rect.x - pt.x, rect.y - pt.y);
                      System.out.println(new Rectangle(viewport.getExtentSize()).contains(rect));
                  }
              }
          }
      }
  
      public static void main(String arg[]) {
          java.awt.EventQueue.invokeLater(new Runnable() {
  
              @Override
              public void run() {
                  ItemVisibleRecCombo ivrc = new ItemVisibleRecCombo();
              }
          });
      }
  }
  </code></pre>