装飾されていないJFrameにJMenuを追加しましたが、マウスをペイントされていない領域に移動するまで、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がペイントされます。