我已将 JMenu 添加到未装饰的 JFrame 中,并且在将鼠标移到未绘制区域上之前不会绘制 JMenuItem。有没有人看到这个问题并知道如何解决/规避?这是一个显示问题的简化测试用例。
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class TestCase {
public static void main(String[] args) throws Exception {
new JFrame() {{
setJMenuBar(new JMenuBar() {{
setOpaque(true);
add(new JMenu("ProblemMenu") {{
setOpaque(true);
add(new JMenuItem("NotPainted"){{
setOpaque(true);
}});}});}});
setUndecorated(true);
setBackground(new Color(11,111,222,196));
setSize(300,300);
setLocation(300,300);
getContentPane().setLayout(new FlowLayout());
getContentPane().add(new JButton(" OpaqueButton "));
setVisible(true);
}};
}
}
单击菜单“ProblemMenu”,菜单将打开一个白色矩形,JMenuItem 应该位于该矩形。将鼠标移到该区域上,JMenuItem 就会绘制。