1 Minute warten

Status
Nicht offen für weitere Antworten.
F

Franke

Gast
hi leutz,
hab mir ne kleine Uhr gebastelt.. besser gesagt bin noch dabei.
jetzt wollt ich fragen ob wer weiss wie man das hinbekommen kann das
eine Methode genau jede Minute aufgerufen wird(Minutenzeiger)
gibts da was?? man kann ja nicht die ganze zeit die zeit abfragen!!

danke schon mal ;)
 
G

Guest

Gast
coole sache.. danke dir !!!!
ist das auch genau ne minute??
oder soll ich doch lieber die uhr alle stunde oder so neu stellen?!?
wenns ziemlich genau iss reicht das nämlich vollkommen, dann stell ich immer nur beim starten des Programms.
das läuft halt mind. immer 8h!!
 

Der Müde Joe

Top Contributor
ja..60000ms sind genau eine Minute.

sonst ist vielleicht

Calendar.get(MINUTE) passender....der Calendar hat die genaue Zeit und im 10 Sekunden takt neu abfragen oder so

EDIT:
also die Uhr nicht vom "Code" abhängig machen, sonder die Uhr nach der Systemzeit stellen (in einem Intervall immer wieder neu Stellen)
 

jobu0101

Bekanntes Mitglied
Wenn die Uhr auf die Minute genau gehen soll, dann würde ich sie halbsekündig aktualisieren lassen. Aber wichtig ist, wie mein Vorredner schon sagte, dass du immer die Systemzeit abfragst, nichts dazu addieren oder so.
 

NTB

Bekanntes Mitglied
Alternativ könntest Du auch mit einem Timer einen TimerTask alle Minute aufrufen und weitermachen lassen.
 

Quaxli

Top Contributor
Ich halte ein Calendar-Objekt für die geeignetere Lösung. Es ist hier auch kein Problem sehr kleine Intervalle abzufragen und auch die Sekunden mit auszugeben.
 
F

Franke

Gast
habs jetzt mal mit dem Calendar probiert.
ich habe jetzt noch ein kleines prob und ich hoffe da kann mir auch noch einer helfen.

habe die uhr soweit fertig, klappt auch alles sehr gut. Jetzt will ich die Uhr in mein bestehendes Prog einbinden
und hab ein kleines prob.
In meinem Programm leg ich immer alles auf verschiedene JPanels, aber da ich die Klasse MyClock von
JPanel abgeleitet habe kann ich das jetzt nicht adden!!!
kann mir einer nen rat geben wie ich das machen kann?? BITTE!!!
evtl aus dieser Klasse was machen das ich auf ein JPanel adden kann?!?!

die Uhr ist lauffähig falls da auch mal einer reinschaun will ;)


Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.Calendar;

public class MyClock extends JPanel
{
	static int ind, sec, min, hour;
	
	@Override
	protected void paintComponent( Graphics g )
	{
		g.setColor(new Color(255,255,255));
		PolygonWithEgdes.drawNeck( g, getWidth() / 2, getHeight() / 2, 300, 60, false, sec);
	}
	
	public static void main( String[] args )
	{
		JFrame f = new JFrame();
		f.setBackground(new Color(9,112,162));
		f.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		f.setSize( 140, 120 );		
		f.setResizable(true);	
			
		sec = 0;
		for(ind=sec; ind>=0; ind++)
		{
			f.add( new MyClock() );

			// hier wird eine halbe Sekunden gewartet damit man auch sicher jede sekunde bekommt!!
			try
			{
				Thread.sleep(500); // 60000 sind eine Minute				
			}
			catch(Exception exc)
			{
				System.out.println("exc");
			}
			
			if(sec > 45)
				sec = Calendar.getInstance().get( Calendar.SECOND 		) -45 ;		
			if(sec <= 45 || sec > 15)
				sec = Calendar.getInstance().get( Calendar.SECOND 		) -15;	
			if(sec < 0)
				sec = Calendar.getInstance().get( Calendar.SECOND		) +45;
										
			// hier wird nach einer Umrundung der Index wieder auf 0 gestellt
			if(ind==60)
				ind = 0;
				
			f.setVisible( true );
		} 
	}
}
class PolygonWithEgdes
{
	static int min, min_anz, hour, hour_anz;
	//private static Polygon p = new Polygon();
	
	public static synchronized void drawNeck( Graphics g, int x, int y, int r, int n, boolean filled, int sec)
	{
		// p.reset();
		// Jetzt caste ich das Graphics objekt in ein 2D Objekt. Grund-> Strichbreite, Kantenglättung usw. möglich
		Graphics2D g2D = (Graphics2D) g;
		g2D.clearRect(0,0,140,120);
		g2D.setRenderingHint( 	RenderingHints.KEY_ANTIALIASING,
                         		RenderingHints.VALUE_ANTIALIAS_ON);

		for ( int i = 0; i <= n; i++ )
		{
			
			// zeichnet punktweise den Kreis --> erst mal drin lassen
			// p.addPoint( 	(int) (x + r * Math.cos( i * 2 * Math.PI / n )),
			//				(int) (y + r * Math.sin( i * 2 * Math.PI / n )) );

			// zeichnet die Linie bei jedem Punkt und verbindet diesen mit dem Mittelpunkt 
			
			if(i%1 == 0 && filled != true && i == sec) 
			{
				// Stil für Zeiger festlegen
				BasicStroke stil_sec = new 	BasicStroke(1.0f, 
											BasicStroke.CAP_BUTT,
											BasicStroke.JOIN_ROUND);
				BasicStroke stil_min = new 	BasicStroke(2.0f, 
											BasicStroke.CAP_BUTT,
											BasicStroke.JOIN_ROUND);
				BasicStroke stil_hour = new BasicStroke(3.0f, 
											BasicStroke.CAP_BUTT,
											BasicStroke.JOIN_ROUND);
											
				// Sekunde holen und zeichnen
				g2D.setStroke(stil_sec);
				g2D.drawLine( 	x,
								y,
								(int) (x + 30 * Math.cos( i * 2 * Math.PI / n )),
								(int) (y + 30 * Math.sin( i * 2 * Math.PI / n )));
				
				// Minute holen und zeichnen
				g2D.setStroke(stil_min);
				min	 = Calendar.getInstance().get( Calendar.MINUTE 		);
				if(min > 45)
					min_anz = min-45 ;	
				if(min <= 45 || min > 15)
					min_anz = min-15;
				if(min < 0)
					min_anz = min+45;					
				g2D.drawLine( 	x,
								y,
								(int) (x + 30 * Math.cos( min_anz * 2 * Math.PI / n )),
								(int) (y + 30 * Math.sin( min_anz * 2 * Math.PI / n )));
							
				// Stunde holen und zeichnen
				g2D.setStroke(stil_hour);
				hour = Calendar.getInstance().get( Calendar.HOUR		);				
				if(hour >= 3 && hour <=12)
					hour_anz = hour*5-15;	
				if(hour < 3)
					hour_anz = hour*5+45;	
				g2D.drawLine( 	x,
								y,
								(int) (x + 25 * Math.cos(hour_anz  * 2 * Math.PI / n )),
								(int) (y + 25 * Math.sin(hour_anz  * 2 * Math.PI / n )));
				
			}
		}

		//if ( filled )
		//	g2D.fillPolygon( p );
		//else
		//	g2D.drawPolygon( p );   
	}
}
 
S

SlaterB

Gast
wieso kannst du MyClock nicht adden (Fehlermeldung, Fehlverhalten, ..)?
 
F

Franke

Gast
kein Fehlverhalten.. es passiert einfach nix :(
kann man eigentlich ein JPanel auf ein JPanel legen?
am besten wär es aus dieser klasse was zu machen das ich auf ein JPanel adden kann..
das prog war mal ein sechseck, und den grundaufbau habe ich übernommen, 60 ecken daraus gemacht und
dann war es nimmer so wild die uhr rein zu pfriemeln ;)
ich denke das mein prob das ist das MyClock ein JPanel ist und deswegen wird das nicht gehen...
ODER?!?!?!

und joe meinst du damit das ich das so abändern soll???
 

Quaxli

Top Contributor
Ich hab' mal dran rumgefrickelt. Schau's Dir an. Die Sekunden passen noch nicht, da fehlt meiner Ansicht nach, 'ne if-Bedingung, aber das darfst Du selber auskaspern :cool:
Das Ganze habe ich auf die Schnelle gemacht. An der einen oder anderen Ecke kann man bestimmt noch was verbessern.

Die Uhr:

Code:
import java.awt.*;
import javax.swing.*;

public class MyClock extends JPanel {

	private static final long	serialVersionUID	= 1L;
	static int	sec, min, hour;
	static MyClock clock;

	@Override
	protected void paintComponent(Graphics g) {
		g.fillRect(100, 100, 50, 50);
		PolygonWithEgdes.drawNeck(g, getWidth() / 2, getHeight() / 2, 300, 60,
				false);
	}

	public static void main(String[] args) {
		clock = new MyClock();
		
		JFrame f = new JFrame();
		f.setBackground(new Color(9, 112, 162));
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		f.setSize(140, 120);
		f.setResizable(true);
    f.getContentPane().add(clock);
    f.setVisible(true);
    
    clock.timeOn();
    
	}
	
	public MyClock(){

	}
	
	private void timeOn(){

		while(true) {


			// hier wird eine halbe Sekunden gewartet damit man auch sicher jede sekunde bekommt!!
			try {
				Thread.sleep(1000); // 60000 sind eine Minute            
			} catch (Exception exc) {
				System.out.println("exc");
			}
			
			repaint();
			
		}
	}
}

Das Polygon:

Code:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.util.Calendar;

class PolygonWithEgdes {
	static int	min, min_anz, hour, hour_anz;

	//private static Polygon p = new Polygon();

	public synchronized static void drawNeck(Graphics g, int x, int y, int r,
			int n, boolean filled) {
		// p.reset();
		// Jetzt caste ich das Graphics objekt in ein 2D Objekt. Grund-> Strichbreite, Kantenglättung usw. möglich
		g.setColor(Color.red);
		Graphics2D g2D = (Graphics2D) g;
		g2D.clearRect(0, 0, 140, 120);
		g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
				RenderingHints.VALUE_ANTIALIAS_ON);


    int sec = getSecond();

		
		for (int i = 0; i <= n; i++) {

			// zeichnet punktweise den Kreis --> erst mal drin lassen
			// p.addPoint(    (int) (x + r * Math.cos( i * 2 * Math.PI / n )),
			//            (int) (y + r * Math.sin( i * 2 * Math.PI / n )) );

			// zeichnet die Linie bei jedem Punkt und verbindet diesen mit dem Mittelpunkt

			if (i % 1 == 0 && filled != true && i == sec) {
				// Stil für Zeiger festlegen
				BasicStroke stil_sec = new BasicStroke(1.0f, BasicStroke.CAP_BUTT,
						BasicStroke.JOIN_ROUND);
				BasicStroke stil_min = new BasicStroke(2.0f, BasicStroke.CAP_BUTT,
						BasicStroke.JOIN_ROUND);
				BasicStroke stil_hour = new BasicStroke(3.0f, BasicStroke.CAP_BUTT,
						BasicStroke.JOIN_ROUND);

				// Sekunde holen und zeichnen
				g2D.setStroke(stil_sec);
				g2D.drawLine(x, y, (int) (x + 30 * Math.cos(i * 2 * Math.PI / n)),
						(int) (y + 30 * Math.sin(i * 2 * Math.PI / n)));

				// Minute holen und zeichnen
				g2D.setStroke(stil_min);
				min = Calendar.getInstance().get(Calendar.MINUTE);
				if (min > 45)
					min_anz = min - 45;
				if (min <= 45 || min > 15)
					min_anz = min - 15;
				if (min < 0)
					min_anz = min + 45;
				g2D.drawLine(x, y,
						(int) (x + 30 * Math.cos(min_anz * 2 * Math.PI / n)),
						(int) (y + 30 * Math.sin(min_anz * 2 * Math.PI / n)));

				// Stunde holen und zeichnen
				g2D.setStroke(stil_hour);
				hour = Calendar.getInstance().get(Calendar.HOUR);
				if (hour >= 3 && hour <= 12)
					hour_anz = hour * 5 - 15;
				if (hour < 3)
					hour_anz = hour * 5 + 45;
				
				g2D.drawLine(x, y,
						(int) (x + 25 * Math.cos(hour_anz * 2 * Math.PI / n)),
						(int) (y + 25 * Math.sin(hour_anz * 2 * Math.PI / n)));

			}
		}
	}
	
	private static int getSecond(){
		
		int sec = Calendar.getInstance().get(Calendar.SECOND);

		if (sec > 45)
			return (sec-45);
		if (sec <= 45 || sec > 15)
			return (sec-15);
		if (sec < 0)
			return (sec+45);
		  
		return 0;
	}
}

Damit sollt dann auch Deine Frage abgedeckt sein, wie Du die Uhr woanders rein kriegst. :wink:
 
F

Franke

Gast
erst mal vielen dank für eure mühe..
hab es immer noch nicht geschafft die uhr in mein prog einzubinden :(

mein prob besteht darin das ich beim aufruf gar net in die main komme!!!

bis jetzt habe ich beim progn in die main eigentlich nur reingeschrieben

new Klassenname(); <-- hier wird praktisch nur der Konstruktor aufgerufen

so wars nie ein prob was aufzurufen weil nichts in der main stand, nur im konstruktor.
also hab in die main ein println gemacht das nicht ausgegeben wird beim aufruf, aber das im konstruktor schon
also ist es das ganz sicher.
ich mach jetzt schon ewig rum aber bring es nicht zusammen,
mein prog ist von einem JFrame abgeleitet auf dem JPanel liegen..

MyClock clock = new MyClock();
.
und wenn ich sage
.
jp_fuss.add(clock);
.
gibt er mir keine Fehlermeldung und nichts.. und das println vom konstruktor wird ausgegeben!!

eigentlich soll die klasse ja dann keine main mehr haben und alles was dort passiert soll bei mir in dem
prog geschehen.. aber ich bekomms einfach net hin!!!

hoffe ihr habt net die schnautze voll ;)
das mit dem neu zeichnen ist auf jeden fall die bessere lösung..
und das mit dem sekundenzeiger hab ich auch gemacht falls es wen interessiert.. hier

Code:
	private static int getSecond()
	{ 
		int sec = Calendar.getInstance().get(Calendar.SECOND); 
		int merk = sec;

		if(sec > 45) 
			sec = merk-45 ;       
		if(sec <= 45 || sec > 15) 
			sec = merk-15;    
		if(sec < 0) 
			sec = merk+45; 

		return sec; 
	}
 
F

Franke

Gast
des rätsels lösung ;)

der hintergrund meines programms in das ich adden wollte ist weiss an dieser stelle..
da ich die zeiger weiss hatte und den hintergrund blau ist folgendes geschehen!!
die farbe der zeiger ist angezeigt worden, nur die hintergrundfarbe wurde nicht gesetzt da ich net in die main gekommen bin!!
also weisses panel auf weissem panel mit weissen zeigern!!!!
lol..
und es war deswegen weiss(na ja leicht gräulich) weil ich mit clearRect() etwas über die uhr gelegt habe
(ging davor ja net anderst) damit wenn ich sie neu zeichne nicht die alten zeiger usw. noch angezeigt werden.

vielen vielen dank @ joe und ganz besonderst an quaxli

das war ne schwere geburt!!!

der code falls es wen interessiert kommt auch


Code:
import java.awt.*; 
import javax.swing.*; 

public class MyClock extends JPanel 
{ 

   private static final long   serialVersionUID   = 1L; 
   static int   sec, min, hour; 
   static MyClock clock;

   @Override 
   protected void paintComponent(Graphics g) 
   { 
		g.fillRect(100, 100, 50, 50); 
		PolygonWithEgdes.drawNeck(	g, getWidth() / 2, getHeight() / 2, 300, 60, false); 
   } 
    
   public MyClock()
   {
   } 
}

das ist jetzt dieklasse myClock..
und so wird es in meinem Prog aufgerufen..
wichtig!! geht nur ganz zum schluss.. also so
Code:
....
setResizable(false);
setVisible(true);
    	
getClock();


public void getClock()
{
	clock.setBounds(0,0,140,120);
	clock.setVisible(true);
	while(ende == false)
	{
		jp_fuss.add(clock); 
		timeOn();
	}
}

sieht dank quaxli jetzt auch noch übersichtlich aus ;)
thxxxxxxxxx a lot!!!!
 
F

Franke

Gast
Sorry aber ich weiss net wie des geht..
warscheinlich eh nur wenn man angemeldet ist!!
normal bin ich auch als MScalli angemeldet, aber irgendwie kann ich mich z.z. net anmelden..
also von daheim aus gehts.. ganz komisch ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S if bedingung - Stunde und Minute vergleichen Java Basics - Anfänger-Themen 5
F Aktuelle Stunde, Minute usw. auslesen Java Basics - Anfänger-Themen 10
J Algorithmus: Grad von floating zu Grad/Minute/Sekunde Java Basics - Anfänger-Themen 3
P Uhrzeit für die Klasse Minute umwandeln. Java Basics - Anfänger-Themen 3
S Dauer --> Millisekunden in Year:Day:Hour:Minute:Second Java Basics - Anfänger-Themen 7
C Mausklicks pro Minute ausrechnen Java Basics - Anfänger-Themen 12
G Timestamp zu Stunde:Minute Java Basics - Anfänger-Themen 2
H JavaFX Hintergrundfarbe ändern, warten, Hintergrundfarbe wieder ändern Java Basics - Anfänger-Themen 34
D Programm auf Enter warten lassen Java Basics - Anfänger-Themen 2
E Richtiges Warten Java Basics - Anfänger-Themen 8
S in ActionListener auf Eingabe aus anderem Frame warten Java Basics - Anfänger-Themen 2
G Wie kann ich 1s lang warten? Java Basics - Anfänger-Themen 1
D JFrame - 10 Sekunden bis zum schließen warten. Java Basics - Anfänger-Themen 2
R Threads aufeinander warten lassen? Java Basics - Anfänger-Themen 10
S Input/Output In Java Swing auf Button warten? Java Basics - Anfänger-Themen 9
A Thread auf anderen warten Java Basics - Anfänger-Themen 2
C Warten auf Antwort Java Basics - Anfänger-Themen 22
S Threads Programm terminiert statt zu warten Java Basics - Anfänger-Themen 20
E ExecutorService warten bis alles fertig? Java Basics - Anfänger-Themen 5
A Threads Eine Klasse muss auf Variable der Anderen warten. Java Basics - Anfänger-Themen 6
D Input/Output Auf Tasteneingabe warten Java Basics - Anfänger-Themen 4
A Activity1 soll auf Activity2 warten (Camera-Intent) Java Basics - Anfänger-Themen 5
D Threads Kartenspiel - auf legen warten Java Basics - Anfänger-Themen 15
B Methode warten lassen bis Button gedrückt wird Java Basics - Anfänger-Themen 16
JAVAnnik auf Threadende warten Java Basics - Anfänger-Themen 6
H Auf Threads warten Java Basics - Anfänger-Themen 3
S Warten bis alle Threads fertig sind Java Basics - Anfänger-Themen 12
I Auf DB-Operation warten Java Basics - Anfänger-Themen 2
R Thread soll auf andere Threads warten Java Basics - Anfänger-Themen 3
T Warteschlange warten lassen bis Ereignis Java Basics - Anfänger-Themen 27
A Main warten lassen bis Variable durch Button übergeben wird Java Basics - Anfänger-Themen 2
V Warten bis die Länge eines Strings nicht mehr 0 ist Java Basics - Anfänger-Themen 13
M prozess starten und warten bis dieser sich beendet Java Basics - Anfänger-Themen 3
G Eigene Klasse für externe Befehle - Warten auf Prozesse Java Basics - Anfänger-Themen 6
D Auf Event warten Java Basics - Anfänger-Themen 4
F Logikproblem: Auf Mouselistener warten Java Basics - Anfänger-Themen 6
E Auf Mouselistener warten?! Java Basics - Anfänger-Themen 20
M Warten bis Thread an einem Semaphore angekommen ist Java Basics - Anfänger-Themen 4
C countdown/timer/Zeit warten lassen Java Basics - Anfänger-Themen 14
S Auf andere Methode warten Java Basics - Anfänger-Themen 7
B Während Schleife nicht auf Eingabe warten Java Basics - Anfänger-Themen 2
T auf vbscript warten Java Basics - Anfänger-Themen 3
S Thread warten abbrechen? Java Basics - Anfänger-Themen 5
C auf beendigung eines threads warten Java Basics - Anfänger-Themen 6
P Warten auf KeyTyped Java Basics - Anfänger-Themen 7
M warten in einer while-schleife Java Basics - Anfänger-Themen 12
L programm zum warten zwingen Java Basics - Anfänger-Themen 4
B Auf Programm warten Java Basics - Anfänger-Themen 2
S Auf Object warten Java Basics - Anfänger-Themen 2
K Auf File- Befehl warten. Java Basics - Anfänger-Themen 10
T eine Sekunde warten Java Basics - Anfänger-Themen 11
C Konsolenanwendung auf belibige Taste warten Java Basics - Anfänger-Themen 2
D Auf anderes Fenster Warten Java Basics - Anfänger-Themen 6
A Warten auf Userinput Java Basics - Anfänger-Themen 2
G Bei JDialog warten Java Basics - Anfänger-Themen 5
T Auf Selection warten Java Basics - Anfänger-Themen 7
N Java Insel 6 lesen oder auf 7 warten ? Java Basics - Anfänger-Themen 11
S Programmablauf pausieren, bzw. auf Eingabe warten Java Basics - Anfänger-Themen 4
G Warten auf Eingabe Java Basics - Anfänger-Themen 12
G Thread soll warten Java Basics - Anfänger-Themen 5
S Thread auf Thread warten lassen. Java Basics - Anfänger-Themen 2
G auf ende mehrerer threads warten Java Basics - Anfänger-Themen 2
B Timer / Thread warten Java Basics - Anfänger-Themen 3
G warten Java Basics - Anfänger-Themen 10
P Warten-Fenster Java Basics - Anfänger-Themen 8
vogella *Gelöst *Im Programm warten (wait()) Java Basics - Anfänger-Themen 2
A Bitte Warten Java Basics - Anfänger-Themen 2
P Externen Proceß starten und warten bis beendet? Java Basics - Anfänger-Themen 2
J Threads: warten bis erste aktion ausgeführt wurde Java Basics - Anfänger-Themen 6
G Eine Methode zum Warten? Java Basics - Anfänger-Themen 7
G Frage zum Warten auf und Aufwecken von Threads Java Basics - Anfänger-Themen 2
L Einfaches Warten in eine Schleife Java Basics - Anfänger-Themen 9
B auf mehrere Threads warten Java Basics - Anfänger-Themen 3
K Animation warten lassen Java Basics - Anfänger-Themen 9
S Auf JInternalFrame warten? Java Basics - Anfänger-Themen 2
R Warten, bis ein Prozess gestartet wurde Java Basics - Anfänger-Themen 23
M x Sekunden warten Java Basics - Anfänger-Themen 13
P Bitte um ein paar Tipps! (Threads, Warten auf Ereignisse,.) Java Basics - Anfänger-Themen 2
M Wie lässt man eine Methode warten ohne Threads zu benutzen? Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben