Seems like I've found a bug in Java:
I need to create the JFrame
with a transparent background and now I need to show the JPopupMenu
for some user actions. It works fine when JPopupMenu
is housed fully inside a JFrame
. But when the JPopupMenu
is partly outside the JFrame
, no item is visible.
SSCCE:
public class PopupTest {
public static void main(String[] a) {
final JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel panel = new JPanel(new BorderLayout());
panel.setBorder(BorderFactory.createLineBorder(Color.RED));
panel.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton() == MouseEvent.BUTTON3) {
JPopupMenu menu = new JPopupMenu();
for (int i = 0 ; i < 10; i++) {
menu.add(String.valueOf(i));
}
menu.show(panel, e.getX(), e.getY());
}
}
});
frame.setContentPane(panel);
frame.setUndecorated(true);
frame.setBackground(new Color(50, 50, 50, 200));
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
frame.setVisible(true);
}
});
}
}
Does anyone know how to solve this?
PS: JDK 7u40, Win x64