我添加了一個JMenu的一個未修飾的JFrame和JMenuItem對象不是畫,直到我將鼠標移動到未上漆的區域。有沒有人看到這個問題,並知道如何解決/規避?這是一個簡化的測試案例,顯示了這個問題。添加到JMenu的未修飾的一個JFrame的每像素透明模式下運行不畫
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繪圖。
'}});}});}});'..Huh?對於一個人來說,我們發現代碼在關閉'}'的時候更容易理解,並且每行只有一個'{'。 –
儘量'SwingUtilities.invokeLater'來初始化你的UI,請參閱[初始線程(http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)瞭解更多詳情。 – tenorsax
同意...我爲了緊湊而做了...應用你的eclipse格式化程序。 – Java42