Farben steuern durch Buttons



  • Hallo,

    Mit dem Code möchte ich die Farbe der Zeichnung (Verkehrsampel hier) durch
    Buttons steuern. Aber die Farbe verändert sich gar nicht. Wo stimmt's nicht?

    public class Verkehrsampel extends java.applet.Applet
    	implements ActionListener
    {
    	private Label anzeige = new Label("Traffic Light Exercise");
     	private Button next = new Button("Next");
      	private Button stop = new Button("Stop");
       private Panel top = new Panel(new FlowLayout());
       private Panel middle = new Panel(new FlowLayout());
      	private Panel bottom = new Panel(new BorderLayout(5, 10));
       private Graphics g;
    
       public void init()
       {
       	setLayout(new GridLayout(3, 1));
          add(top);
          top.add(anzeige);
          add(bottom);
          bottom.add("West", next);
          bottom.add("East", stop);
          next.addActionListener(this);
          stop.addActionListener(this);
       }
    
       public void paint(Graphics g)
       {
       	g.fillOval(50,100,150,150);
       }
    
       public void actionPerformed(ActionEvent e)
       {
       	Button ursprung = (Button)e.getSource();
          if (ursprung.getLabel().equals("Next"))
          {
             Color green = Color.green;
             //repaint();
             paint(this.getGraphics());   
          }
          else
             if (ursprung.getLabel().equals("Stop"))
             {
             	Color red = Color.red;
             	paint(this.getGraphics());
             }
       }
    }
    

    Danke



  • Du musst den Farbwert in der paint-Methode setzen!

    g.setColor(Color.red)

    ...



  • Wie kann ich die Farbe denn verändern?



  • Wenn du es schon so machst, dann musst du nichtmehr viel ändern:

    if (ursprung.getLabel().equals("Next")) 
    { 
      Color green = Color.green; 
      Graphics g = this.getGraphics();
      g.setColor(green);
      //repaint();  //Das ist übrigens schlecht, wenn man paint direkt aufruft.
      paint(g);    
    }
    

Anmelden zum Antworten