Zeichen verschiedener Formen

HeinerPyt

Erfahrenes Mitglied
Nachdem mir hier schon ein paar Mal geholfen wurde habe ich nun erneut ein Problem.

Ich habe mir eine class zum Zeichnen uaf einem Panel definiert.
Code:
class DrawPanel extends JPanel
	{
		@Override
		protected void paintComponent (Graphics g)
		{
			super.paintComponent(g);
			g.setColor(Color.WHITE);
			g.drawLine(10,10,100,50);
			g.drawOval(100, 100, 300, 400);
		}
	
	}


Davon habe ich mir eine panel abgeleitet

Code:
	public  class Keplerbahn extends JFrame 
	{
		
	    DrawPanel panel1 = new DrawPanel();

		public Keplerbahn( int x, int y )
		{
			setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE); 
		    setSize( x, y ); 
		    Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
/*		    setLocation( (d.width  - getSize().width ) / 2, 
		                 (d.height - getSize().height) / 2 ); 
*/		    
		    setLocation(0,0 ); 
		  } 
		

		  @SuppressWarnings("deprecation")
		  
		  
		public void init_window() 
		  { 
				JFrame win = new Keplerbahn(1280,1024);
				
			    win.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
			    win.setTitle("Berechnet die Keplerbahnen");

			    panel1.setSize(1280, 1024);
			    panel1.setBackground(Color.BLACK);

			    win.add(panel1);
			    win.setVisible( true ); 

			    JDialog dialog1 = new JDialog();
			    
			    
				JCheckBox cb1 = new JCheckBox("Merkur");
				JCheckBox cb2 = new JCheckBox("Venus");
				JCheckBox cb3 = new JCheckBox("Erde");
				JCheckBox cb4 = new JCheckBox("Mars");
				JCheckBox cb5 = new JCheckBox("Jupiter");
				JCheckBox cb6 = new JCheckBox("Saturn");
				JCheckBox cb7 = new JCheckBox("Uranus");
				JCheckBox cb8 = new JCheckBox("Neptun");
				JCheckBox cb9 = new JCheckBox("Pluto");
				
			    dialog1.add(cb1);
			    dialog1.add(cb2);
			    dialog1.add(cb3);
			    dialog1.add(cb4);
			    dialog1.add(cb5);
			    dialog1.add(cb6);
			    dialog1.add(cb7);
			    dialog1.add(cb8);
			    dialog1.add(cb9);
			    dialog1.setSize(300, 100);
			    dialog1.setLayout(new GridLayout(3,3)); 
			    dialog1.setVisible(true);
			    dialog1.show();
			    
		  }
		  
 
	
	}


So das klappt auch alles soweit. Wenn ich das Programm laufen lasse, erscheint auf meinem Panel eine Linie und Oval.

Nun meine Frage :

- Wie bekomme ich es hin, das ich zu verschiedenen Zeiten im Programm unterschiedliche Formen zeichen kann?
Also an einer beliebigen Stelle im Programm einen Kreis und an einer anderen eine Line und dann vllt. ein Dreieck zeichen.


Danke
 
Hi!
Da die Frage ein wenig unpräzise ist:
Führe 2 Boolean Werte ein, und je nachdem welcher Wert wahr ist, zeichnest du die eine oder die andere Form..

*grüssle*
 
Danke, das ist ein Ansatz. Aber um das ganze zu präziesieren, hier meine Vorstellung:

Hauptprgramm
{
wenn a dann zeichne einen Kreis;
Führe irgendetwas aus...
Setz eine andere Farbe und zeichne eine Linie.
}

Dazu muss ich ja beim Aufruf der entsprechenden Methode im DrawPanel auch bestimmte Parameter mit übergeben, um z.B den Durchmesser des Kreies zu variieren.

Nur wie ist hier die Frage?
 
Hi

du könntest dir eine Aufzählung schreiben und dann überprüfen was gezeichnet werden soll:
Java:
public enum Form{
  DREIECK,
  RECHTECK,
  QUADRAT,
  KREIS,
  OVAL
}
In deiner Funktion kannst du das dann als Parameter übergeben:
Java:
public void zeichneForm(Form form, int x, int y, int a, int b, Color color){
  this.form = form;
  this.x = x;
  this.y = y;
  this.a = a;
  this. b = b;
  this.color = c;
}

protected void paintComponent (Graphics g){
  if( this.form == OVAL){
    g.setColor(this.color);
    g.drawOval(this.x, this.y, this.a, this.b);
  }			
}
 
Zuletzt bearbeitet:
Zurück