2012-03-24 2 views
1

반투명을 사용하는 jFrame에 jComboBox가있을 때 문제가있는 것 같습니다. 드롭 다운을 클릭하면 흰색 배경이 다른 구성 요소를 덮어 표시되지만 드롭 다운의 항목은 표시되지 않습니다. 각 항목은 마우스를 마우스로 가리키면 표시됩니다. 국경은 또한 주변에있는 것을 보인다.JDK7 반투명 + jframe + jcombobox

이 문제를 해결하려면 어떻게해야합니까?

감사합니다.

+0

어쩌면 하나 당신을 도울 수 있도록 코드의 일부 조각을 제공 할 것입니다? – Jagger

답변

2

나는 또한 동일한 문제에 직면 해있다.

빠른 수정 :

import java.awt.*; 
import javax.swing.*; 
import javax.swing.event.*; 
class WindowOpaqueTest2{ 
    public JComponent makeUI() { 
    JPanel p = new JPanel(); 
    p.setBackground(new Color(.5f,.5f,.5f,.5f)); 
    p.add(new JComboBox<String>(new String[] {"aaa", "bb", "c"})); 
    JComboBox c = new JComboBox<String>(new String[] {"aaa", "bb", "c"}); 
    c.addPopupMenuListener(new PopupMenuListener() { 
     @Override public void popupMenuWillBecomeVisible(final PopupMenuEvent e) { 
     EventQueue.invokeLater(new Runnable() { 
      @Override public void run() { 
      JComboBox c = (JComboBox)e.getSource(); 
      Object o = c.getAccessibleContext().getAccessibleChild(0); 
      if(o instanceof JComponent) { //BasicComboPopup 
       ((JComponent)o).repaint(); 
      } 
      } 
     }); 
     } 
     @Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {} 
     @Override public void popupMenuCanceled(PopupMenuEvent e) {} 
    }); 
    p.add(c); 
    return p; 
    } 
    public static void main(String[] args) { 
    EventQueue.invokeLater(new Runnable() { 
     @Override public void run() { createAndShowGUI(); } 
    }); 
    } 
    public static void createAndShowGUI() { 
    JFrame.setDefaultLookAndFeelDecorated(true); 
    JFrame f = new JFrame(); 
    //com.sun.awt.AWTUtilities.setWindowOpaque(f, false); 
    f.setBackground(new Color(0,true)); //1.7.0 
    f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); 
    f.getContentPane().add(new WindowOpaqueTest2().makeUI()); 
    f.setSize(320, 240); 
    f.setLocationRelativeTo(null); 
    f.setVisible(true); 
    } 
} 
+0

고맙습니다. – mKorbel