2012-10-16 17 views
2

我添加了一個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); 
    }}; 
} 
} 

enter image description here

單擊菜單「ProblemMenu」菜單將有一個白色長方形,其中的JMenuItem應位於打開。將鼠標移動到該區域,JMenuItem繪圖。

+0

'}});}});}});'..Huh?對於一個人來說,我們發現代碼在關閉'}'的時候更容易理解,並且每行只有一個'{'。 –

+0

儘量'SwingUtilities.invokeLater'來初始化你的UI,請參閱[初始線程(http://docs.oracle.com/javase/tutorial/uiswing/concurrency/initial.html)瞭解更多詳情。 – tenorsax

+0

同意...我爲了緊湊而做了...應用你的eclipse格式化程序。 – Java42

回答

1

每個像素的半透明的JFrame菜單塗料問題是由JRE引起的固定通過移動到較新的JRE(1.7.0_09-B05)。

相關問題