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
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