Hallo Zusammen, ich bitte euch mir kurz auf die Sprünge zu Helfen.
Ich habe von MVC Modell erfahren, hab mir das mal angesehen und wollte dies in meiner jetzigen Aufgabe anwenden.
Es geht darum eine Analoge Uhr zu bauen.
Ihr müsst euch das so vorstellen dort wo die Stunden sind, ist je ein kleine Kugel.
Darunter ist eine weitere Kugel der die Minuten darstellen soll und
darunter wieder eins das die Sekunden anzeigt.
Also hab ich 12 Kugeln die die Stunden Markieren
jeweils 60 Kugeln die die Minuten und Sekunden Anzeigen.
Was hab ich bis jetzt.
Die x und y Positionen der jeweiligen kugeln habe ich in jeweils ein 2D in Array gepackt.
Was hab ich bis jetzt.
ich habe mir drei packages erstellt und in diesen jeweils die klassen zusammengefasst.
com.analogclock1
clockMain.java <-- Meine main klasse bis jetzt noch leer.
com.analogclock1.model
RandomNumber.java <--gibt mir eine zufällige Zahl aus
RandomColor.java <-- holt drei Zufallszahlen und baut daraus eine neue Farbe
clockModel.java sieht folgendermaßen aus
im Package
com.analogclock1.view ist
clockView.java
.analogclock1.controller
clockController.java
jetzt zu meiner Ratlosigkeit
wie hole ich aus meinen 2DArrays die werte der Dimensionen und male daraus meine Kreise
prinzipiell geht es mir um das malen der Kreise. Die werte mittels for schleifen sind nicht das problem.
Aber wie male ich mit den werten.
wie würdet Ihr das angehen.
Wohlgemerkt das die kreise initial gezeichnet werden
dann werden Sie mit den Zeitwerten also Stunde Minute und Sekunde
mit neuen Farben nochmal gezeichnet ab dann jede Sekunde wieder.
ich hab echt ein Blackout.
Freue mich über jede Anregung.
Ich habe von MVC Modell erfahren, hab mir das mal angesehen und wollte dies in meiner jetzigen Aufgabe anwenden.
Es geht darum eine Analoge Uhr zu bauen.
Ihr müsst euch das so vorstellen dort wo die Stunden sind, ist je ein kleine Kugel.
Darunter ist eine weitere Kugel der die Minuten darstellen soll und
darunter wieder eins das die Sekunden anzeigt.
Also hab ich 12 Kugeln die die Stunden Markieren
jeweils 60 Kugeln die die Minuten und Sekunden Anzeigen.
Was hab ich bis jetzt.
Die x und y Positionen der jeweiligen kugeln habe ich in jeweils ein 2D in Array gepackt.
Was hab ich bis jetzt.
ich habe mir drei packages erstellt und in diesen jeweils die klassen zusammengefasst.
com.analogclock1
clockMain.java <-- Meine main klasse bis jetzt noch leer.
com.analogclock1.model
RandomNumber.java <--gibt mir eine zufällige Zahl aus
RandomColor.java <-- holt drei Zufallszahlen und baut daraus eine neue Farbe
clockModel.java sieht folgendermaßen aus
Java:
package org.analogclock1.model;
import java.awt.Color;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class clockModel
{
/*
* Dimensionen der Frame in einzelnen werte aufgeteilt.
* @param frameHeight ist die höhe der Frame unserer Uhr.
* @param frameWidth ist die Breite der Frame unserer Uhr.
*
* Koordinaten des Mittelpunktes.
* @param circleCenterX ist die hälfte von frameWidth.
* @param circleCenterY ist die hälfte von frameHeight.
*
* Der Radius unserer Uhr
* @param circleRadius
*
* Farbe unserer Stunden Minuten Sekunden Anzeiger wechselt stündlich,
* minutlich durch Zufall Generierte Farben.
* @param circleColorHours --> wechselt bei jeder 60. minute
* @param circleColorMinutes -->wechselt jeder 60. minute
* @param circleColorSeconds -->wecheslet jeder 60.sekunde.
*
* RandomColor generiert zufällige Farben
*
*/
private int circleCenterX, circleCenterY, circleRadius, frameHeight, frameWidth;
private int degreeHours, degreeMinSec, hours, minutes;
private double[][] dimensionHours, dimensionMinutes, dimensionSeconds;
private double x, y;
private Color circleColorHours, circleColorMinutes, circleColorSeconds;
RandomColor rdc = new RandomColor();
public clockModel()
{
setFrameDimension();
setCircleCenter();
setDegreeHours();
setDegreeMinSec();
setCircleRadius();
setDimensionHours();
setDimensionMinutes();
setDimensionSeconds();
setCircleColorHours();
setCircleColorMinutes();
setDimensionSeconds();
setTime();
}
public void setFrameDimension()
{
this.frameHeight=400;
this.frameWidth=400;
}
public void setCircleCenter()
{
this.circleCenterY = this.frameHeight / 2;
this.circleCenterX = this.frameWidth / 2;
}
public void setDegreeHours()
{
this.degreeHours = 360 / 12;
}
public void setDegreeMinSec()
{
this.degreeMinSec = 360 / 60;
}
public void setCircleRadius()
{
this.circleRadius = (this.circleCenterX - 50);
}
// x und y Positionen der Punkte werden gesetzt.
public void setDimensionHours()
{
this.x = this.y = 0; // setze x und y auf 0;
this.dimensionHours = new double[12][2];
for (int i = 0; i < dimensionHours.length; i++)
{
this.x = this.circleRadius * Math.cos((Math.PI * (this.degreeHours * i - 90)) / 180);
dimensionHours[i][0] = this.circleCenterX + this.x;
this.y = circleRadius * Math.sin(Math.PI * (this.degreeHours * i - 90) / 180);
dimensionHours[i][1] = this.circleCenterY + this.y;
}
}
public void setDimensionMinutes()
{
this.x = this.y = 0; // setze x und y auf 0;
this.dimensionHours = new double[60][2];
for (int i = 0; i < dimensionMinutes.length; i++)
{
this.x = (this.circleRadius - 20) * Math.cos((Math.PI * (this.degreeMinSec * i - 90)) / 180);
dimensionMinutes[i][0] = this.circleCenterX + this.x;
this.y = (this.circleRadius - 20) * Math.sin((Math.PI * (this.degreeMinSec * i - 90)) / 180);
dimensionMinutes[i][1] = this.circleCenterY + this.y;
}
}
public void setDimensionSeconds()
{
this.x = this.y = 0; // setze x und y auf 0;
this.dimensionSeconds = new double[60][2];
for (int i = 0; i < dimensionSeconds.length; i++)
{
this.x = (this.circleRadius - 40) * Math.cos((Math.PI * (this.degreeMinSec * i - 90)) / 180);
dimensionSeconds[i][0] = this.circleCenterX + this.x;
this.y = (this.circleRadius - 40) * Math.sin((Math.PI * (this.degreeMinSec * i - 90)) / 180);
dimensionSeconds[i][1] = this.circleCenterY + this.y;
}
}
//Zufällig erstellte Farbenwerte werden gesetzt.
public void setCircleColorHours()
{
this.circleColorHours = rdc.genRandomColor();
}
public void setCircleColorMinutes()
{
this.circleColorMinutes = rdc.genRandomColor();
}
public void setCircleColorSeconds()
{
this.circleColorSeconds = rdc.genRandomColor();
}
// h, m und s werden gesetzt.
public void setTime()
{
int h, m;
Calendar cal = Calendar.getInstance();
h = Integer.parseInt(new SimpleDateFormat("hh").format(cal.getTime()));
m = Integer.parseInt(new SimpleDateFormat("mm").format(cal.getTime()));
this.hours = h;
this.minutes = m;
}
}
com.analogclock1.view ist
clockView.java
Java:
package org.analogclock1.view;
import javax.swing.*;
import java.awt.BorderLayout;
import java.awt.Graphics;
import org.analogclock1.model.clockModel;
public class clockView
{
private JFrame frame;
clockModel cm=new clockModel();
public clockView(String text)
{
frame = new JFrame("View");
frame.getContentPane().setLayout(new BorderLayout());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(cm.getFrameWidth(),cm.getFrameHeight());
frame.setVisible(true);
}
public void setText(String text)
{
label.setText(text);
}
public JFrame getFrameSize()
{
return frame;
}
public void paint(Graphics g)
{
}
}
.analogclock1.controller
clockController.java
jetzt zu meiner Ratlosigkeit
wie hole ich aus meinen 2DArrays die werte der Dimensionen und male daraus meine Kreise
prinzipiell geht es mir um das malen der Kreise. Die werte mittels for schleifen sind nicht das problem.
Aber wie male ich mit den werten.
wie würdet Ihr das angehen.
Wohlgemerkt das die kreise initial gezeichnet werden
dann werden Sie mit den Zeitwerten also Stunde Minute und Sekunde
mit neuen Farben nochmal gezeichnet ab dann jede Sekunde wieder.
ich hab echt ein Blackout.
Freue mich über jede Anregung.
Zuletzt bearbeitet von einem Moderator: