In meinem Script unten funktioniert das mit dem Malen ohne Probleme. Nur wenn ich über die FarbRadioButtons eine andere Farbe wählen möchte wechselt er egal welche Farbe ich anklicke immer zu Blau. Kann mir jemand eine Helfen, wie ich dieses Beheben kann.
Hier das Script (es ist Bestandteil eines größeren Programmes:
public class Aufgabe37 extends JPanel implements MouseListener, MouseMotionListener {
private int x;
private int y;
Aufgabe37(){
this.add(new JLabel("Malen mit der Maus"));
this.add(new ResetButton(this));
FarbRadioButton rb1 = new FarbRadioButton(Color.BLACK, "Schwarz");
FarbRadioButton rb2 = new FarbRadioButton(Color.RED, "Rot");
FarbRadioButton rb3 = new FarbRadioButton(Color.YELLOW, "Gelb");
FarbRadioButton rb4 = new FarbRadioButton(Color.BLUE, "Blau");
rb1.setSelected(true);
ButtonGroup bgroup = new ButtonGroup();
bgroup.add(rb1);
bgroup.add(rb2);
bgroup.add(rb3);
bgroup.add(rb4);
this.add(rb1);
this.add(rb2);
this.add(rb3);
this.add(rb4);
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){
setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR ));
x = e.getX();
y = e.getY();
}
public void mouseReleased(MouseEvent e){
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
public void mouseDragged(MouseEvent e){
setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR ));
Color farbe = FarbRadioButton.getGewaehlteFarbe();
Graphics g = this.getGraphics();
g.setColor(farbe);
g.drawLine(x, y, e.getX(), e.getY());
x = e.getX();
y = e.getY();
}
public void mouseMoved(MouseEvent e){}
}
class ResetButton extends JButton implements ActionListener {
private JPanel psave;
public ResetButton(JPanel preal){
super("Reset");
psave = preal;
this.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
psave.repaint();
}
}
class FarbRadioButton extends JRadioButton implements ActionListener {
static Color gColor;
private String sreal;
static Color gewaehlteFarbe;
public FarbRadioButton(Color csave, String ssave){
super();
gewaehlteFarbe=Color.BLACK;
gColor=csave;
sreal=ssave;
this.setText(sreal);
this.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
gewaehlteFarbe=gColor;
}
static Color getGewaehlteFarbe(){
return gewaehlteFarbe;
}
}
Hier das Script (es ist Bestandteil eines größeren Programmes:
public class Aufgabe37 extends JPanel implements MouseListener, MouseMotionListener {
private int x;
private int y;
Aufgabe37(){
this.add(new JLabel("Malen mit der Maus"));
this.add(new ResetButton(this));
FarbRadioButton rb1 = new FarbRadioButton(Color.BLACK, "Schwarz");
FarbRadioButton rb2 = new FarbRadioButton(Color.RED, "Rot");
FarbRadioButton rb3 = new FarbRadioButton(Color.YELLOW, "Gelb");
FarbRadioButton rb4 = new FarbRadioButton(Color.BLUE, "Blau");
rb1.setSelected(true);
ButtonGroup bgroup = new ButtonGroup();
bgroup.add(rb1);
bgroup.add(rb2);
bgroup.add(rb3);
bgroup.add(rb4);
this.add(rb1);
this.add(rb2);
this.add(rb3);
this.add(rb4);
this.addMouseListener(this);
this.addMouseMotionListener(this);
}
public void mouseClicked(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mousePressed(MouseEvent e){
setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR ));
x = e.getX();
y = e.getY();
}
public void mouseReleased(MouseEvent e){
setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
}
public void mouseDragged(MouseEvent e){
setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR ));
Color farbe = FarbRadioButton.getGewaehlteFarbe();
Graphics g = this.getGraphics();
g.setColor(farbe);
g.drawLine(x, y, e.getX(), e.getY());
x = e.getX();
y = e.getY();
}
public void mouseMoved(MouseEvent e){}
}
class ResetButton extends JButton implements ActionListener {
private JPanel psave;
public ResetButton(JPanel preal){
super("Reset");
psave = preal;
this.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
psave.repaint();
}
}
class FarbRadioButton extends JRadioButton implements ActionListener {
static Color gColor;
private String sreal;
static Color gewaehlteFarbe;
public FarbRadioButton(Color csave, String ssave){
super();
gewaehlteFarbe=Color.BLACK;
gColor=csave;
sreal=ssave;
this.setText(sreal);
this.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
gewaehlteFarbe=gColor;
}
static Color getGewaehlteFarbe(){
return gewaehlteFarbe;
}
}