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