Swing Farbenwechsel

Lange

Mitglied
hallo,

ich möchte mit folgenden Programm die Hintergrundfarben wechseln wenn man auf einen RadioButton klickt. Aber wenn ich darauf klicke passiert nichts. Weiß jemand woran das liegt?

[Java]
package kapitel15;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class FarbenFrame extends JFrame {
private Container c;
private JRadioButton rBox, gBox, bBox;

public FarbenFrame() {
rBox = new JRadioButton("rot");
gBox = new JRadioButton("gruen");
bBox = new JRadioButton("blau");
ButtonGroup bg = new ButtonGroup();
bg.add(rBox);
bg.add(gBox);
bg.add(bBox);

rBox.setSelected(true);

c = getContentPane();
c.setLayout(new FlowLayout());
c.add(rBox);
c.add(gBox);
c.add(bBox);

c.addMouseListener(new MausHorcher());
}

class MausHorcher implements MouseListener {
public void mousePressed(MouseEvent e) {
float r = 0, g = 0, b = 0;

if (rBox.isSelected())
r = (float) Math.random();
else if (gBox.isSelected())
g = (float) Math.random();
else
b = (float) Math.random();

c.setBackground(new Color(r,g,b));
}
public void mouseClicked(MouseEvent e) { }
public void mouseReleased(MouseEvent e) { }
public void mouseEntered(MouseEvent e) { }
public void mouseExited(MouseEvent e) { }
}

// main-Methode
public static void main(String[] args) {
FarbenFrame fenster = new FarbenFrame();
fenster.setTitle("FarbenFrame");
fenster.setSize(190,100);
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
[/code]
 

eRaaaa

Top Contributor
Code:
c.repaint()
aufrufen?

:autsch:???:L:noe:

Wieso fügst du denn einen MouseListener an den ContentPane ran? Der Listener Code wird doch vermutlich gar nicht aufgerufen oder?
Probier`s mal so:
Java:
    ActionListener listener = new ActionListener() {
		public void actionPerformed(ActionEvent e) {
		      float r = 0, g = 0, b = 0;
		      if (rBox.isSelected())
		        r = (float) Math.random();
		      else if (gBox.isSelected())
		        g = (float) Math.random();
		      else
		        b = (float) Math.random();
		 
		      c.setBackground(new Color(r,g,b));
		}
	};
	rBox.addActionListener(listener);
	gBox.addActionListener(listener);
	bBox.addActionListener(listener);
 

Lange

Mitglied
Danke für die Hilfe, nun funktioniert es auch, wenn ich
rBox.addMouseListener(new MausHorcher());
gBox.addMouseListener(new MausHorcher());
bBox.addMouseListener(new MausHorcher());

schreibe oder mit der Variante mit dem ActionListener.
 

Neue Themen


Oben