2012-07-17 41 views
6

Sorunumda, ilk JPanel'de bulunan yarı saydam (yarı saydam) bir JPanel ve bir başka JPanel var. En iyi JPanel'e radyo düğmeleri eklediğimde. Sorun, her radyo düğmesinin etiketinin üzerine fareyi her girdiğimde (ve fareyi etiketin her dışına taşıdığım her seferde), daha koyu ve daha koyu olur.Salınım: yarı saydam JPanel üzerindeki radyo düğmesi etiketi üzerine farenin üzerine gelin.

package trial; 

import java.awt.Color; 
import javax.swing.ButtonGroup; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 
import javax.swing.JRadioButton; 

public class Test { 

public static void main(String arg[]){ 
    JFrame rootframe = new JFrame("Test panel"); 
    rootframe.setSize(800, 550); 
    rootframe.setExtendedState(JFrame.MAXIMIZED_BOTH); 

    JPanel basePanel = new JPanel(); //fills rootFrame 
    basePanel.setOpaque(true); 
    basePanel.setBackground(Color.yellow);  

    JPanel panelContainingRadioButtons = new JPanel();//wraps radio buttons 
    panelContainingRadioButtons.setOpaque(true); 
    panelContainingRadioButtons.setBackground(new Color(0,0,0,100)); 

    ButtonGroup buttonGroup1 = new ButtonGroup(); 

    JRadioButton jRadioButton1 = new JRadioButton(); 
    jRadioButton1.setText("Text A..............................."); 
    jRadioButton1.setOpaque(false); 
    jRadioButton1.setForeground(Color.white); 
    buttonGroup1.add(jRadioButton1); 

    JRadioButton jRadioButton2 = new JRadioButton(); 
    jRadioButton2.setOpaque(false); 
    jRadioButton2.setForeground(Color.white); 
    buttonGroup1.add(jRadioButton2); 
    jRadioButton2.setText("Text B......................."); 

    JRadioButton jRadioButton3 = new JRadioButton(); 
    jRadioButton3.setOpaque(false); 
    jRadioButton3.setForeground(Color.white); 
    buttonGroup1.add(jRadioButton3); 
    jRadioButton3.setText("Text C................................"); 

    panelContainingRadioButtons.add(jRadioButton1); 
    panelContainingRadioButtons.add(jRadioButton2); 
    panelContainingRadioButtons.add(jRadioButton3); 

    basePanel.add(panelContainingRadioButtons); 

    rootframe.add(basePanel); 
    rootframe.setVisible(true); 

} 
} 

ben bu radyo düğmeleri olan bir sorun olmadığına inanıyorum başka vesileyle ben gözlemledim, çünkü aynı koşullarda, en üst Jpanel bir JLabel eklendi ve üst Panele dinleyici eklerseniz böylece

http://s13.postimage.org/6yn3cw48n/Untitled.png

gerekirse -: fare çıkışlar, metin aşağıdaki resimde olduğu gibi farklı yerlerde yeniden çizilmesi aldığında JLabel metninin renk fare üzerinde süpürdü değiştirmek ve orjinal rengine sıfırlanır Bu kodu da göndereceğim. Her iki durumda da aynı sorun olduğunu düşünüyorum.

cevap

8

Bu resim resimlerini, muhtemelen arka plan için kullanılan saydam renk nedeniyle elde edersiniz. JComponents'ler şeffaf renkleri arka plan renkleri olarak desteklemez. İşte iyi bir article tarafından @camickr konuya ayrıntılı olarak açıklar ve aynı zamanda alternatif bir çözüm sağlar.

+1

+1 İyi yazı. – trashgod

+1

Tam olarak neye ihtiyacım var .. Çok teşekkür ederim efendim! –

1

Kırmızı, yeşil, mavi ve alfa kullanmak yerine Ör: setBackground (yeni Renk (236, 233, 216, 220)); setBackground'u (yeni Renk (236,233,216)) kullanın; Kırmızı, yeşil, mavi olan Mükemmel çalışır.