Мой вопрос похож на это, но я думаю имеет более простой пример.
В основном, вызывая AWTUtilities.setWindowOpaque(window, false)
, чтобы сделать фон JFrame прозрачным, мой JPopupMenu иногда отображается как пустой.
public class JavaApplication8 {
JPopupMenu popup;
JMenuItem open;
JLabel bgLabel = new JLabel("testing");
public static void main(String[] args) {
// TODO code application logic here
JFrame window = new JFrame("test");
URL bgURL = JavaApplication8.class.getResource("images/bg.jpg");
ImageIcon bg = new ImageIcon(bgURL);
JavaApplication8 test = new JavaApplication8();
test.setPopupMenu();
test.bgLabel.setIcon(bg);
window.add(test.bgLabel, BorderLayout.CENTER);
window.setUndecorated(true);
AWTUtilities.setWindowOpaque(window, false);
//window.pack();
window.setSize(200, 200);
window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
window.setLocationRelativeTo(null);
window.setVisible(true);
}
public void setPopupMenu(){
popup = new JPopupMenu();
open = new JMenuItem("Test");
popup.add(open);
this.bgLabel.setComponentPopupMenu(popup);
}
}
Вот изображение того, что происходит:
Что интересно, это происходит всякий раз, когда я нажимаю на правую сторону JFrame. Не уверен, почему. Имейте в виду, что я не уверен на 100%, что AWTUtilities.setWindowOpaque(window, false)
действительно является причиной этой проблемы, однако всякий раз, когда я удаляю эту строку, все идет нормально.
РЕДАКТИРОВАТЬ: Как указано camickr
, looks like this happens when the popup menu is not fully contained in the bounds of the parent window.