Hallo!
Ich habe folgende Klasse:
[HIGHLIGHT="Java"]public class Lampe {
private boolean leuchtet;
private int durchmesser = 50;
private int x;
private int y;
// Konstruktor fuer die Lampe
public Lampe(int x, int y){
leuchtet = false;
x= x;
y = y;
}
public void zeichneAn(Graphics g){
g.setColor(Color.RED);
g.fillOval(x, y, durchmesser, durchmesser);
}
public void zeichneAus(Graphics g){
g.setColor(Color.BLACK);
g.drawOval(x, y, durchmesser, durchmesser);
}
public void paint(Graphics g){
if(leuchtet)
zeichneAn(g);
else
zeichneAus(g);
}
}[/HIGHLIGHT]
Ich will nun in einer anderen Klasse (class Foo) in der main mehrere Lampen erzeugen und dann auf ein Canvas zeichnen (mit lampe.zeichneAus()) aber das klappt nicht (die kreise werden ganz kurz angezeigt und sind dann sofort wieder weg):
[HIGHLIGHT="Java"]public class Foo extends Frame{
class MyCanvas extends Canvas{
public void paint(Graphics g)
{
super.paint(g);
g.drawString("Canvas",10,20);
}
}
Lampe [] lampenArray = new Lampe[7];
Canvas c = new MyCanvas();
public Foo(){
//den super-Konstruktor (von Frame) aufrufen, damit auch ein Frame gezeichnet wird:
super("foo");
//den Frame auf die richtige Groesse setzen:
setSize(700, 700) ;
//und sichtbar machen:
setVisible(true) ;
//Canvas zum Frame hinzufuegen:
add(c);
}
public static void main(String[] args) {
Foo foo= new Foo();
for (int i=0;i<7;i++){
foo.lampenArray = new Lampe(50*i,50*i); //7 Lampen werden erzeugt und in das lampenArray eingefuegt
foo.lampenArray.zeichneAus(foo.c.getGraphics()); //und auf das Canvas gezeichnet
}
}
}[/HIGHLIGHT]
Ich mache bestimmt viel falsch mit paint usw, aber ich weiß einfach nicht wies richtig geht
Ich danke für jede Hilfe!
Gruß
Sladda
(PS: wieso kann man hier den code nicht mehr schön formatieren?)
Ich habe folgende Klasse:
[HIGHLIGHT="Java"]public class Lampe {
private boolean leuchtet;
private int durchmesser = 50;
private int x;
private int y;
// Konstruktor fuer die Lampe
public Lampe(int x, int y){
leuchtet = false;
x= x;
y = y;
}
public void zeichneAn(Graphics g){
g.setColor(Color.RED);
g.fillOval(x, y, durchmesser, durchmesser);
}
public void zeichneAus(Graphics g){
g.setColor(Color.BLACK);
g.drawOval(x, y, durchmesser, durchmesser);
}
public void paint(Graphics g){
if(leuchtet)
zeichneAn(g);
else
zeichneAus(g);
}
}[/HIGHLIGHT]
Ich will nun in einer anderen Klasse (class Foo) in der main mehrere Lampen erzeugen und dann auf ein Canvas zeichnen (mit lampe.zeichneAus()) aber das klappt nicht (die kreise werden ganz kurz angezeigt und sind dann sofort wieder weg):
[HIGHLIGHT="Java"]public class Foo extends Frame{
class MyCanvas extends Canvas{
public void paint(Graphics g)
{
super.paint(g);
g.drawString("Canvas",10,20);
}
}
Lampe [] lampenArray = new Lampe[7];
Canvas c = new MyCanvas();
public Foo(){
//den super-Konstruktor (von Frame) aufrufen, damit auch ein Frame gezeichnet wird:
super("foo");
//den Frame auf die richtige Groesse setzen:
setSize(700, 700) ;
//und sichtbar machen:
setVisible(true) ;
//Canvas zum Frame hinzufuegen:
add(c);
}
public static void main(String[] args) {
Foo foo= new Foo();
for (int i=0;i<7;i++){
foo.lampenArray = new Lampe(50*i,50*i); //7 Lampen werden erzeugt und in das lampenArray eingefuegt
foo.lampenArray.zeichneAus(foo.c.getGraphics()); //und auf das Canvas gezeichnet
}
}
}[/HIGHLIGHT]
Ich mache bestimmt viel falsch mit paint usw, aber ich weiß einfach nicht wies richtig geht
Ich danke für jede Hilfe!
Gruß
Sladda
(PS: wieso kann man hier den code nicht mehr schön formatieren?)
Zuletzt bearbeitet von einem Moderator: