getSource()



  • Hi,

    warum funktioniert folgender Quellcóde nicht ?

    import java.applet.Applet;
    import java.awt.*;
    import java.awt.event.*;
    
    public class KleinUndGross extends Applet implements ActionListener {
    
        private int durchmesser=20;
        private Button klein, gross;
        public void init () {
            klein = new Button("Klein");
            add (klein);
            klein.addActionListener(this);
            gross = new Button("Groß");
            add (gross);
            gross.addActionListener(this); 
        }
    
        public void paint(Graphics g) {
            g.drawOval (25,25, durchmesser, durchmesser);
        }
    
        public void actionPerformed(ActionEvent event) {
            if (event.getSource() == klein)
                durchmesser = durchmesser -10;
            if (event.getSource() == gross)
                durchmesser = durchmesser + 10;
    
        }
    
    }
    

    😕

    Gruss
    pierre



  • So gehts:

    [/java]

    import java.applet.Applet;
    import java.awt.;
    import java.awt.event.
    ;

    public class KleinUndGross extends Applet implements ActionListener {

    private int durchmesser=20;
    private Button klein, gross;
    public void init () {
    klein = new Button("Klein");
    add (klein);
    klein.addActionListener(this);
    gross = new Button("Groß");
    add (gross);
    gross.addActionListener(this);
    }

    public void paint(Graphics g) {
    g.drawOval (25,25, durchmesser, durchmesser);
    }

    public void actionPerformed(ActionEvent event) {
    if (event.getSource() == klein) {
    durchmesser = durchmesser -10;
    repaint(); Applet neu zeichnen
    }
    if (event.getSource() == gross) {
    durchmesser = durchmesser + 10;
    repaint(); // Applet neu zeichnen
    }

    }
    }

    Du veränderst in deinem Actionlistener zwar den Durchmesser, zeichnest die Änderungen jedoch nicht. Mit einem Aufruf von repaint() zwingst du das Applet sich selbst neu zu zeichnen.

    cu,
    flo



  • @ interpreter

    thks,
    stimmt, gerade habe ich es ausprobiert und es funzt.

    Kann mir jemand sagen, was an diesem Quellcode nicht stimmt?

    import java.awt.*;
    import java.awt.event.*;
    import java.applet.Applet;
    public class Button1 extends java.applet.Applet implements ActionListener {
        Font f = new Font("Times Roman", Font.BOLD, 36);   
        Color c = new Color(255,0,0);  
    
        private Button mehr,weniger;
    
        public int zaehlwert=0; 
        public void init () {
        Button mehr = new Button("Mehr");
        add(mehr);
        mehr.addActionListener(this);
        Button weniger = new Button("Weniger");
        add(weniger);
        weniger.addActionListener(this);
        }
    
        public void paint (Graphics g)
        {
            g.setFont(f);
            g.setColor(c);
            g.drawString("Zaehlwert: "+zaehlwert,40,140);
    
        }   
    
         public void actionPerformed (ActionEvent event)
         {
            if (event.getSource()==mehr)
    
            zaehlwert=zaehlwert+1;
    
            if (event.getSource()==weniger)  
    
              zaehlwert=zaehlwert-1;
            repaint();   
    
    }
    }
    

    Gruss
    pierre



  • Nimm vor "mehr" und "weniger" das "Button" weg - also statt:

    Button mehr = new Button("Mehr"); 
        add(mehr); 
        mehr.addActionListener(this); 
        Button weniger = new Button("Weniger");
    

    das hier:

    mehr = new Button("Mehr"); 
        add(mehr); 
        mehr.addActionListener(this); 
        weniger = new Button("Weniger");
    

    Dann fügst du die Instanzvariablen hinzu, und nicht die neuen lokalen Variablen (die deine Instanzvariablen verdecken)



  • @ interpreter,

    danke. du hast mir mit deinen Beiträgen wirklich sehr geholfen.

    gruss
    pierre



  • danke. du hast mir mit deinen Beiträgen wirklich sehr geholfen.

    Kein Problem 🙂


Anmelden zum Antworten