Hi
ich wage momentan für den IT Unterricht in der Schule meine ersten Programmierversuche mit Java, bin also ein blutiger Anfänger. Wir haben ein Malprogramm von unserem Lehrer bekommen, dem wir neue Funktionen hinzufügen sollen.
Hier der Code von meinem Programm soweit
Ich versuche es also hinzukriegen, dass, wenn der Button Rechteck in der Klasse Zeichenbrettergänzt gedrückt wird, der Variable Z der Wert 1 zugewiesen wird und ich so in der Klasse Leinwand durch Abfragen der Variable Z durch
if (Z==1)
{
Graphics stift = getGraphics();
stift.setColor(farbe);
stift.fillRect(x,y,4,4);
}
beispielsweise nen Rechteck zeichne. Allerdings kennt die Klasse class Leinwand die Variable Z der Klasse Zeichenbrettergänzt dann nicht und ich bekomme beim kompilieren ne fehlermeldung vonwegen
zeichenbrettergänzt.java:143: cannot find symbol
symbol : variable Z
location: class Leinwand
if (Z==1)
^
Wie kriege ich das nun hin, dass ich in der Klasse Leinwand auf die Variable Z aus der öffentlichen Klasse Zeichenbrettergänzt zugreifen kann ?
ich wage momentan für den IT Unterricht in der Schule meine ersten Programmierversuche mit Java, bin also ein blutiger Anfänger. Wir haben ein Malprogramm von unserem Lehrer bekommen, dem wir neue Funktionen hinzufügen sollen.
Hier der Code von meinem Programm soweit
Code:
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class zeichenbrettergänzt extends Applet implements ActionListener
{
// Anfang Variablen
Panel Bereich1;
Panel Bereich2;
Panel Bereich3;
Button BCyan;
Button BYellow;
Button BMagenta;
Button BBlack;
Button BRadieren;
Button BRechteck;
Button BKreis;
Button BStift;
Leinwand L;
int rot;
int gruen;
int blau;
Scrollbar rotr;
Scrollbar gruenr;
Scrollbar blaur;
Label labelr;
Label labelg;
Label labelb;
Panel cpanel;
Color Farbe;
Graphics pen;
Label Titel;
int Z;
// Ende Variablen
public void init ()
{
setLayout(new BorderLayout());
// Anfang Komponenten
Label titel = new Label("Mein Zeichenbrett");
add("North", titel);
Bereich1 = new Panel();
Bereich2 = new Panel();
Bereich3 = new Panel();
add("Center", Bereich1);
add("South", Bereich2);
add("West", Bereich3);
Bereich3.setLayout(new GridLayout(0,1));
//Hier Buttons für geometrische Figuren in Bereich3 einfügen
BStift = new Button ("Stift");
BStift.setBackground(Color.gray);
BStift.addActionListener(this);
BRechteck = new Button ("Rechteck");
BRechteck.setBackground(Color.gray);
BRechteck.addActionListener(this);
BKreis = new Button ("Kreis");
BKreis.setBackground(Color.gray);
BKreis.addActionListener(this);
Bereich3.add(BRechteck);
Bereich3.add(BKreis);
Bereich3.add(BStift);
L = new Leinwand(Color.white);
L.setSize(400,200);
Bereich1.add(L);
Bereich2.setLayout(new GridLayout(1,4,10,10));
BCyan = new Button("Cyan");
BCyan.setBackground(Color.cyan);
BCyan.addActionListener(this);
BYellow = new Button("Yellow");
BYellow.setBackground(Color.yellow);
BYellow.addActionListener(this);
BMagenta = new Button("Magenta");
BMagenta.setBackground(Color.magenta);
BMagenta.addActionListener(this);
BBlack = new Button("Black");
BBlack.setBackground(Color.black);
BBlack.setForeground(Color.white);
BBlack.addActionListener(this);
BRadieren = new Button("Radieren");
BRadieren.setBackground(Color.white);
BRadieren.addActionListener(this);
Bereich2.add(BCyan);
Bereich2.add(BYellow);
Bereich2.add(BMagenta);
Bereich2.add(BBlack);
Bereich2.add(BRadieren);
// Ende Komponenten
}
// Anfang Ereignisprozeduren
public void actionPerformed(ActionEvent e)
{
String s = e.getActionCommand();
Color f = Color.white;
if (s.equals("Cyan")) f = Color.cyan;
if (s.equals("Yellow")) f = Color.yellow;
if (s.equals("Magenta")) f = Color.magenta;
if (s.equals("Black")) f = Color.black;
L.gibF(f);
}
public void actionPerformed2(ActionEvent e)
{
String s = e.getActionCommand();
if (s.equals("Rechteck")) Z = 1;
if (s.equals("Kreis")) Z = 2;
if (s.equals("Stift")) Z = 3;
}
// Ende Ereignisprozeduren
}
class Leinwand extends Canvas implements MouseMotionListener
{
Color farbe = Color.gray;
public Leinwand(Color HGFarbe)
{
addMouseMotionListener(this);
setBackground(HGFarbe);
}
public void mouseDragged(MouseEvent e)
{
int x;
x = e.getX();
int y;
y = e.getY();
// wie komme ich hier wieder an die Variable Z aus der Klasse Zeichenbrettergänzt ? ist das möglich?
// Zeichenbrettergänzt ist public, sollte also gehen, aber wie ?
if (Z==1)
{
Graphics stift = getGraphics();
stift.setColor(farbe);
stift.fillRect(x,y,4,4);
}
}
public void mouseMoved(MouseEvent e)
{
}
public void mousePressed(MouseEvent e)
{
int x;
x = e.getX();
int y;
y = e.getY();
Graphics stift = getGraphics();
stift.setColor(farbe);
stift.drawOval(x,y,9,9);
}
public void mouseReleased(MouseEvent e)
{
}
public void mouseClicked(MouseEvent e)
{
}
public void mouseExited(MouseEvent e)
{
}
public void mouseEntered(MouseEvent e)
{
}
public void gibF(Color fa)
{
farbe = fa;
}
}
Ich versuche es also hinzukriegen, dass, wenn der Button Rechteck in der Klasse Zeichenbrettergänzt gedrückt wird, der Variable Z der Wert 1 zugewiesen wird und ich so in der Klasse Leinwand durch Abfragen der Variable Z durch
if (Z==1)
{
Graphics stift = getGraphics();
stift.setColor(farbe);
stift.fillRect(x,y,4,4);
}
beispielsweise nen Rechteck zeichne. Allerdings kennt die Klasse class Leinwand die Variable Z der Klasse Zeichenbrettergänzt dann nicht und ich bekomme beim kompilieren ne fehlermeldung vonwegen
zeichenbrettergänzt.java:143: cannot find symbol
symbol : variable Z
location: class Leinwand
if (Z==1)
^
Wie kriege ich das nun hin, dass ich in der Klasse Leinwand auf die Variable Z aus der öffentlichen Klasse Zeichenbrettergänzt zugreifen kann ?