Swing Problem beim Zeichnen von Kreisen

kieni17

Neues Mitglied
Hab mir eine kleines Auswahlmenü gebastelt mit JCheckBoxen (die werden korrekt angezeigt), will danach je nachdem Kreise oder Rechtecke zeichnen(bist jetzt nur Kreise), leider werden meine Kreise nicht angezeigt. Ich hofffe die Breschreibung ist ausreichend. Bin noch leider noch ein noob.
Hier sind meine QuellTexte

Main.java
[Java]
public class Main {
public static void main(String args[])
{
GUI wnd = new GUI();

}
}
[/Java]

Figur.java
[Java]
import java.awt.Color;
import java.awt.Graphics;

public interface Figur {

public void zeichne(Graphics g);
public void verschiebe(Graphics g, Color back,Color circle, int x, int y);

}
[/Java]


GUI.java
[Java]
package Uebungen;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JOptionPane;


public class GUI extends JFrame {

final int RADIUS = 70;

private ArrayList<Figur> figuren= new ArrayList<Figur> ();
boolean kreis;
boolean rechteck;
JCheckBox cb1= new JCheckBox("Kreis");
JCheckBox cb2= new JCheckBox("Rechteck");

public GUI()
{
super("Kreise und Rechtecke");
setLayout(new FlowLayout());
setSize(800,600);

add(cb1);
add(cb2);
cb1.addItemListener(new itemHandler());
cb2.addItemListener(new itemHandler());
setVisible(true);


figuren.add(new Kreis(40,50,RADIUS,Color.BLUE));
Figur f = figuren.get(figuren.size()-1);
f.zeichne(getContentPane().getGraphics());
System.out.println("Es wird gezeichnet");
// die Kreise werden im Frame nicht angezeigt


this.addKeyListener(new KeyAdapter()
{
public void keyTyped(KeyEvent e)
{
System.out.println("Es wird gezeichnet");
char key=e.getKeyChar();
if(key == 'd' || key == 'D')
{
if(kreis== true)
{
figuren.add(new Kreis(40,50,RADIUS,Color.BLUE));
Figur f = figuren.get(figuren.size()-1);
f.zeichne(getGraphics());
System.out.println("Es wird gezeichnet");
}
}
}
});
}
private class itemHandler implements ItemListener
{

@Override
public void itemStateChanged(ItemEvent e)
{
if(cb1.isSelected() && cb2.isSelected())
JOptionPane.showMessageDialog(null," Fehler");
else if(cb1.isSelected())
{

rechteck=false;
kreis=true;
System.out.println("Kreis ausgewählt =" + kreis);

}
else if(cb2.isSelected())
{
kreis=false;
rechteck=true;
System.out.println("Rechteck ausgewählt= " + rechteck);


}

}

}

}
[/Java]

Kreis.java
[Java]
package Uebungen;
import java.awt.*;

public /*abstract*/ class Kreis implements Figur
{
public int x,
y,
radius;
Color color;
public Kreis(int x, int y, int radius)
{
this.x = x;
this.y = y;
this.radius = radius;
}
public Kreis(int x, int y, int radius,Color cl)
{
this.x = x;
this.y = y;
this.radius = radius;
this.color=cl;
}
public void zeichne(Graphics g)
{
g.drawOval(this.x-this.radius,this.y-this.radius,2*radius,2*radius);
g.fillOval(this.x-this.radius,this.y-this.radius,2*radius,2*radius);
System.out.println("Es wird ein Kreis gezeichnet" + toString());
}

public void verschiebe(Graphics g, Color back,Color circle, int x, int y)
{
g.setColor(back); //Zeichenfarbe auf Hintergrund setzen
this.zeichne(g); //löschen der alten Figur
this.x = x; //Position des Kreises verändern
this.y = y;
this.color= circle;
g.setColor(circle); //wieder auf die Originalfarbe setzen
this.zeichne(g); //zeichnen in der neuen Position
}

public static void main(String []args)
{
Kreis k = new Kreis(400,400,100);
}
public String toString()
{
return new String("Kreis: x: " + x + " y: "+ y +" Raidus: " + radius + " Farbe: " + color );
}

}
[/Java]
mfg Kieni17
 
danke für die schnelle Antwort . Ich werde mir das Tut mal gründlich durchlesen ,wenn ich dann immer noch Probleme habe sag ich beschied.

mfg kieni17
 
auf alle Fälle zu einem Fehler führt, du hast zwei main-Methoden. (in Main und in Kreis).
Nein, das führt auf keinen Fall zu einem Fehler. Eine JVM durchsucht eine JAR nicht nach sämtlichen
Code:
public static void main(String[])
-Methoden, sondern schaut in die Manifest-Datei, in der die Hauptklasse, also der Einstiegspunkt der Anwendung, angegeben ist.
Ist bei mir auch öfter so, dass ich mehrere davon in einem Projekt habe. 🙂
 
Nein, das führt auf keinen Fall zu einem Fehler. Eine JVM durchsucht eine JAR nicht nach sämtlichen
Code:
public static void main(String[])
-Methoden, sondern schaut in die Manifest-Datei, in der die Hauptklasse, also der Einstiegspunkt der Anwendung, angegeben ist.
Ist bei mir auch öfter so, dass ich mehrere davon in einem Projekt habe. 🙂

Ok, hast natürlich recht. Hab mich "mal wieder" vertan. Danke für die Information und entschuldigung für die Fehlinformation :-/
 

Neue Themen


Zurück
Oben