Now the problems: 1. If the popup will be off the screen, it is moved down. A better solution would be to allow it to drop down instead. See the implementation of BasicComboPopup.computePopupBounds for example code to do this. 2. This solution requires you to subclass a specific ComboBoxUI. I think it would have been better to delegate so as to make the solution applicable to any UI. The only way I see of getting acces to the popup in BasicComboBoxUI is subclassing or reflection. So I can't get the current popup to delegate to it.
Anyway, this solution is relatively simple and you can customize it as necessary.