Swing Probleme mit transparenz der Hintergrundfarbe und JRadioButtons

Skarflex

Mitglied
Moin alle zusammen.
Habe ein Problem mit der transparenz einer Farbe bzw. den JRadioButtons. Und zwar habe ich eine Farbe mit
Java:
private static final Color transparenz = new Color (243,90,93,30);
erstellt.

Diese Farbe habe ich einem JPanel "panelRechenart" als Background gegeben
Java:
panelRechenart.setBackground(transparenz);
Auf diesem JPanel liegen einmal ein Label und rechts ein weiteres JPanel mit GridLayout und JRadioButtons. Alles nach dem "panelRechenart" ist setOpaque(false).

Mein Problem ist jetzt folgendes: Wenn ich mit der Maus über die JRadioButtons fahre, verdunkelt sich der Hintergrund und es werden Bildausschnitte des Hintergrundes meiner ContentPane angezeigt.
Nehme ich den Alphawert aus der Farbe, wird alles normal angezeigt.

Ist dies ein generelles Problem in swing, da ich bei setBackground direkt keinen Alpha Wert eingeben kann oder liegt es an dem GridLayout, da ich alle anderen Komponenten absolut platziert habe und ich diesen Fehler nicht bekomme?

Hoffe meine Angaben reichen, wollte euch ersparen meinen ganzen Code hier zu posten.

Danke schon mal im vorraus, bin hier seit geraumer Zeit nämlich schon am verzweifeln.
 
Zuletzt bearbeitet:
Ich fürchte es wird dir nicht erspart bleiben deinen Code zu posten. Vielleicht speckst du ihn ab, so dass nur dein "Fehler" zu sehen ist. Also ganz im Sinne eines KSKB.
 
Denn mal meine Klasse auf das wesentliche gekürzt
Java:
/*alle nötigen imports*/
public class Startfenster extends JFrame {
	
	static JFrame startfenster;
	
	private int i;
	private JButton but = new JButton ("Start");
	private JLabel [] lab = new JLabel [4];
	private JRadioButton [] rechenart = new JRadioButton [3];
        /*weitere JRadioButtons*/
	
	private String upper = new String ("+");
	private String lower = new String ("-");
	private String up = upper.toUpperCase();
	private String low = lower.toLowerCase();
	
	private String [] stdStrLabel = {"Rechenart", "Zahlenbereich", "Anzahl Aufgaben", "Schwierigkeit"};
	private String [] stdStrRechenart = {"+", "-", up+"/"+low};
        /*weiter Strings*/
	private String [] auswahl = new String [4];
	
	private static final Color transparenz = new Color (243,90,93,30);
	Font stdFont = new Font ("Arial", Font.BOLD, 30);
	Font radFont = new Font ("Arial", Font.ITALIC, 25);
	
	// Konstruktor ------------------------------------------------------
	Startfenster (String title){
		startfenster = new JFrame (title);
		Hintergrund background = new Hintergrund();
		startfenster.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
		startfenster.setResizable (false);
		startfenster.setContentPane(background);
		background.setSize(1280, 720);
		background.setPreferredSize(new Dimension (1280, 720));
		startfenster.getContentPane().setLayout(null);
		startfenster.pack();
		startfenster.setLocation(Rechenmeister.d.width/2 - startfenster.getSize().width/2, Rechenmeister.d.height/2 - startfenster.getSize().height/2);
		
		// Variablen initialisieren -------------------------------------
		for (i = 0; i < lab.length; i++){
			lab [i] = new JLabel (stdStrLabel [i]);
			lab [i].setFont (stdFont);
		}
		
		for (i = 0; i < rechenart.length; i++){
			if (i == 0) {rechenart [i] = new JRadioButton(""+stdStrRechenart [i], true);}
			else {rechenart [i] = new JRadioButton(""+stdStrRechenart [i]);}
			rechenart [i].setFont(radFont);
			rechenart [i].addActionListener(new Auswahl());
			rechenart [i].setOpaque(false);
			if (i == 2) {rechenart [i].setActionCommand("+ und -");}
		}
                /*weitere JRadioButtons gleiches Schema*/
		
		//Button-Groups ----------------------------------------------------------------------------------------------------------------------
		ButtonGroup grRechenart = new ButtonGroup();
		for (i = 0; i < rechenart.length; i++) {grRechenart.add(rechenart[i]);}
		/*weitere ButtonGroups*/	
		
		but.setFont(stdFont);
		
			//Rechenarten -----------------------------------------------------------------------------------------------------------
			JPanel panelRechenart = new JPanel (null);
			//panelRechenart.setOpaque(transparenz);
			panelRechenart.setBackground(transparenz);
			panelRechenart.setSize((startfenster.getContentPane().getSize().width/12)*5, startfenster.getContentPane().getSize().height/7);
			panelRechenart.setBorder(BorderFactory.createLineBorder(Color.white));
			startfenster.getContentPane().add(panelRechenart);
			panelRechenart.setLocation(20, 20);
			
			//Auswahl ---------------------------------------------------------------------------------------------
			JPanel auswahlRechenart = new JPanel (new GridLayout (1,3));
			auswahlRechenart.add(rechenart [0]);
			auswahlRechenart.add(rechenart [1]);
			auswahlRechenart.add(rechenart [2]);
			auswahlRechenart.setSize(panelRechenart.getSize().width/2, panelRechenart.getSize().height);
			panelRechenart.add(auswahlRechenart);
			auswahlRechenart.setLocation(panelRechenart.getSize().width/2, 0);
			auswahlRechenart.setOpaque(false);
			
				//Label -----------------------------------------------------------------------------------------------
				lab[0].setSize (panelRechenart.getSize().width/2, panelRechenart.getSize().height);
				panelRechenart.add(lab[0]);
				
			/*weiter Panels mit gleichem Schema*/
					
			//Button ---------------------------------------------------------------------------------------------------------------------
			but.setSize(startfenster.getContentPane().getSize().width/8, startfenster.getContentPane().getSize().height/12);
			startfenster.getContentPane().add(but);
			but.setLocation((panelAufgaben.getSize().width/2 + 20) - but.getSize().width/2, startfenster.getContentPane().getSize().height - (panelAufgaben.getSize().height + but.getSize().height));		
			but.addActionListener(new Start ());
				
		// Listener -----------------------------------------------------
		startfenster.addWindowListener(new FensterSchließen ());
		
		startfenster.setVisible (true);
	}
	class Start implements ActionListener {

		@Override
		public void actionPerformed (ActionEvent e) {
			String s = e.getActionCommand ();
			if (s.equals ("Start")) {
				
				for (i = 0; i < rechenart.length; i++){
					if (rechenart [i].isSelected () == true){
						auswahl [0] = rechenart [i].getActionCommand ();
					}
				}
				
				for (i = 0; i < bereich.length; i++){
					if (bereich [i].isSelected () == true){
						auswahl [1] = bereich [i].getActionCommand ();
					}
				}
				
				for (i = 0; i < aufgaben.length; i++){
					if (aufgaben [i].isSelected() == true){
						auswahl [2] = aufgaben [i].getActionCommand();
					}
				}
				
				for (i = 0; i < schwierigkeit.length; i++){
					if (schwierigkeit [i].isSelected() == true){
						auswahl [3] = schwierigkeit [i].getActionCommand();
					}
				}
				
				Startfenster.startfenster.dispose();
				rechnung = new Aufgaben(auswahl [0], auswahl [1], auswahl [2], auswahl [3]);
				new Rechenfenster (Rechenmeister.title);		
			}
		}
	}	
}
Hoffe ist alles wichtige enthalten, habe eigentlich nur ähnliche Panels und JRadioButtons der Panels rausgenommen.
 

Zurück
Oben