hiho
ich hab ein problem mit der systemzeit. also mein vorhaben ist folgendes:
ich habe eine digitale uhr, die im moment nur als counter funktoiniert. jetzt will ich die aber zu ner uhr umfunktionieren, die nach der systemzeit läuft.
jetzt weiß ich aber nicht, wie ich an die einzelnen werte der uhrzeit kommen soll, weil ich für jede ziffer die zahl extra einstellen muss.
an das aktuelle datum komm ich ja durch
mit den (leider als deprecated markierten) methoden
komm ich an den aktuellen stunden, minuten und sekundenwert dran.
jetzt muss ich es allerdings schaffen, jede ziffer einzeln zu bekommen.
wenn die uhrzeit z.b. 23:43:21 ist, brauche ich die stunden nicht als 23, sondern als 2 und 3.
meine idee war, die zahlen einfach in einen string zu packen, so dass ich jeden wert einzeln durch
hohlen kann.
aber wie soll ich int in string konvertieren?!? ich bekomm dann immer fehlermeldungen wie icompatible types und dass das nicht konvertierbar ist -.-
kann mir wer weiterhelfen, oder ne bessere möglichkeit finden? der code der uhr ist dabei (die klasse Segment7 ist eig unwichtig, nur der vollständigkeit halber)
Alles anzeigen
ich hab ein problem mit der systemzeit. also mein vorhaben ist folgendes:
ich habe eine digitale uhr, die im moment nur als counter funktoiniert. jetzt will ich die aber zu ner uhr umfunktionieren, die nach der systemzeit läuft.
jetzt weiß ich aber nicht, wie ich an die einzelnen werte der uhrzeit kommen soll, weil ich für jede ziffer die zahl extra einstellen muss.
an das aktuelle datum komm ich ja durch
mit den (leider als deprecated markierten) methoden
komm ich an den aktuellen stunden, minuten und sekundenwert dran.
jetzt muss ich es allerdings schaffen, jede ziffer einzeln zu bekommen.
wenn die uhrzeit z.b. 23:43:21 ist, brauche ich die stunden nicht als 23, sondern als 2 und 3.
meine idee war, die zahlen einfach in einen string zu packen, so dass ich jeden wert einzeln durch
hohlen kann.
aber wie soll ich int in string konvertieren?!? ich bekomm dann immer fehlermeldungen wie icompatible types und dass das nicht konvertierbar ist -.-
kann mir wer weiterhelfen, oder ne bessere möglichkeit finden? der code der uhr ist dabei (die klasse Segment7 ist eig unwichtig, nur der vollständigkeit halber)
Quellcode
- package PingPong;
- import javax.swing.*;
- import java.awt.event.*;
- import java.awt.*;
- /**
- * Write a description of class Clock here.
- *
- * @author (your name)
- * @version (a version number or a date)
- */
- public class Clock{
- public Thread th;
- public JPanel panel;
- public Segment7 ss1;
- public Segment7 ss2;
- public Segment7 sm1;
- public Segment7 sm2;
- public Segment7 sh1;
- public Segment7 sh2;
- public Clock(){
- }
- public JPanel fill(){
- panel = new JPanel();
- panel.setLayout(new FlowLayout(FlowLayout.CENTER));
- sh2 = new Segment7();
- panel.add(sh2);
- sh1 = new Segment7();
- panel.add(sh1);
- panel.add(new Panel());
- sm2 = new Segment7();
- panel.add(sm2);
- sm1 = new Segment7();
- panel.add(sm1);
- panel.add(new Panel());
- ss2 = new Segment7();
- panel.add(ss2);
- ss1 = new Segment7();
- panel.add(ss1);
- return panel;
- }
- public void count(){
- while(true){
- if(sh1.getValue() == 9){
- sh2.setValue(sh2.getValue() + 1);
- }
- if(ss1.getValue() == 9){
- if(ss2.getValue() == 5){
- if(sm1.getValue() == 9){
- if(sm2.getValue() == 5){
- sh1.setValue(sh1.getValue() + 1);
- sm2.setValue(0);
- sm1.setValue(0);
- ss2.setValue(0);
- ss1.setValue(0);
- sleep(1000);
- }
- }
- }
- }
- if(sm1.getValue() == 9){
- sm2.setValue(sm2.getValue() + 1);
- }
- if(ss1.getValue() == 9){
- if(ss2.getValue() == 5){
- sm1.setValue(sm1.getValue() + 1);
- ss2.setValue(0);
- ss1.setValue(0);
- sleep(1000);
- }
- }
- if(ss1.getValue() == 9){
- ss2.setValue(ss2.getValue() + 1);
- }
- ss1.setValue(ss1.getValue() + 1);
- sleep(1000);
- }
- }
- private void sleep(int millis){
- try{
- Thread.sleep(millis);
- }
- catch(InterruptedException e){
- System.err.println(e.toString());
- }
- }
- public void start(){
- th = new Thread(new ClockRunnable());
- th.start();
- }
- public static void main(String[] args){
- JFrame f = new JFrame("Clock");
- Container c = f.getContentPane();
- Clock cl = new Clock();
- c.add(cl.fill());
- f.pack();
- f.setVisible(true);
- cl.start();
- }
- class ClockRunnable implements Runnable{
- public void run(){
- count();
- }
- }
- }
- /**
- *
- *
- * @author JavaBook 33.2
- * @version 1.1
- */
- class Segment7 extends Canvas{
- private int digit;
- private boolean hasfocus;
- private int[][] polysx = {
- { 1, 2, 8, 9, 8, 2}, //Segment 0
- { 9,10,10, 9, 8, 8}, //Segment 1
- { 9,10,10, 9, 8, 8}, //Segment 2
- { 1, 2, 8, 9, 8, 2}, //Segment 3
- { 1, 2, 2, 1, 0, 0}, //Segment 4
- { 1, 2, 2, 1, 0, 0}, //Segment 5
- { 1, 2, 8, 9, 8, 2}, //Segment 6
- };
- private int[][] polysy = {
- { 1, 0, 0, 1, 2, 2}, //Segment 0
- { 1, 2, 8, 9, 8, 2}, //Segment 1
- { 9,10,16,17,16,10}, //Segment 2
- {17,16,16,17,18,18}, //Segment 3
- { 9,10,16,17,16,10}, //Segment 4
- { 1, 2, 8, 9, 8, 2}, //Segment 5
- { 9, 8, 8, 9,10,10}, //Segment 6
- };
- private int[][] digits = {
- {1,1,1,1,1,1,0}, //Ziffer 0
- {0,1,1,0,0,0,0}, //Ziffer 1
- {1,1,0,1,1,0,1}, //Ziffer 2
- {1,1,1,1,0,0,1}, //Ziffer 3
- {0,1,1,0,0,1,1}, //Ziffer 4
- {1,0,1,1,0,1,1}, //Ziffer 5
- {1,0,1,1,1,1,1}, //Ziffer 6
- {1,1,1,0,0,0,0}, //Ziffer 7
- {1,1,1,1,1,1,1}, //Ziffer 8
- {1,1,1,1,0,1,1} //Ziffer 9
- };
- public Segment7()
- {
- this(0);
- }
- public Segment7(int digit)
- {
- super();
- this.digit = digit;
- this.hasfocus = false;
- }
- public Dimension getPreferredSize()
- {
- return new Dimension(5*10,5*18);
- }
- public Dimension getMaximumSize()
- {
- return new Dimension(5*10,5*18);
- }
- public Dimension getMinimumSize()
- {
- return new Dimension(1*10,1*18);
- }
- public void paint(Graphics g)
- {
- Color darkblue = new Color(0,0,100);
- Color lightblue = new Color(0,0,255);
- //dx und dy berechnen
- int dx = getSize().width / 10;
- int dy = getSize().height / 18;
- //Hintergrund
- g.setColor(darkblue);
- g.fillRect(0,0,getSize().width,getSize().height);
- //Segmente
- g.setColor(lightblue);
- for (int i=0; i < 7; ++i) { //alle Segmente
- if (digits[digit][i] == 1) {
- Polygon poly = new Polygon();
- for (int j = 0; j < 6; ++j) { //alle Eckpunkte
- poly.addPoint(dx*polysx[i][j],dy*polysy[i][j]);
- }
- g.fillPolygon(poly);
- }
- }
- //Trennlinien
- g.setColor(darkblue);
- g.drawLine(0,0,dx*10,dy*10);
- g.drawLine(0,8*dy,10*dx,18*dy);
- g.drawLine(0,10*dy,10*dx,0);
- g.drawLine(0,18*dy,10*dx,8*dy);
- }
- public int getValue()
- {
- return digit;
- }
- public void setValue(int value)
- {
- digit = value % 10;
- repaint();
- }
- }