Digitaluhr Problem

Status
Nicht offen für weitere Antworten.

pbr1h5ro

Neues Mitglied
Hallo, habe hier eine Digitaluhr gebaut, aber Eclipse hat da Probleme. Kann mir da jemand weiterhelfen ?

Code:
import java.awt.*;
import java.awt.event.*;
import java.util.*;

import javax.swing.*;

class Segment7 extends Canvas
{	private static final long serialVersionUID = 1L;
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
   };

   void zeitHolen(){
   	   Calendar c = new GregorianCalendar();	
   	
   	   int std = c.get(Calendar.HOUR);
   	   int min = c.get(Calendar.MINUTE);
   	   int sec = c.get(Calendar.SECOND);
   	
   	   // Abfrage zum Uhrzeit-Ckeck
   	
   	   for(int z=0; z==24; z++)
   	   {   
   		   if(std == z)
   		   {
   			   for(int g=0; g<=6; g++){ 		// Segment Check
   			     int seg1[][] = polysx[z][g];	// Polysx-Werte neuem Array zuweisen
   			     int seg2[][] = polysy[z][g];	// Polysy-Werte neuem Array zuweisen
   			   
   			     for(int d=0; d<=9; d++){		// Ziffern Check
    			   int dig[][] = digits[d][g];	// Digits-Werte neuem Array zuweisen
   			     }
   			  }
    	    }
          }
        } 
   	    
   public Segment7()
   {
      this(0);
   }

   public Segment7(int digit)
   {
      super();
   }
   
   public static void main (String[]args)
   {
	   JFrame fenster = new JFrame();
	   Segment7 grafik = new Segment7();
	   fenster.add(grafik,BorderLayout.CENTER);
	   fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	   fenster.setLocationByPlatform(true);
	   fenster.setVisible(true);
	   fenster.setSize(300,400);
   }
   
   public Dimension getPreferredSize()
   {
      return new Dimension(5*10,5*18);
   }

   public Dimension getMinimumSize()
   {
      return new Dimension(1*10,1*18);
   }

   public boolean isFocusTraversable()
   {
      return true;
   }

   public void paint(Graphics g)
   {
      Color darkred  = new Color(127,0,0);
      Color yellow   = new Color(255,255,0);
      	// dx und dy berechnen
      int dx = getSize().width / 10;
      int dy = getSize().height / 18;
      	// Hintergrund
      g.setColor(darkred);
      g.fillRect(0,0,getSize().width,getSize().height);
      g.setColor(yellow);        

      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*seg1[i][j],dy*seg2[i][j]);
            }
            g.fillPolygon(poly);
         }
      }
      // Trennlinien
      g.setColor(darkred);
      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;
   }

   
}
 
Fehler ab Zeile 59 - 63 bei der Innerenen for-schleife.
Es soll dabei die Uhrzeit geprüft werden, und dann die entsprechenden Werte in ein neues Array übergeben werden. Und aus dem Array soll später dann das Sgment für die Uhrzeitanzeige erzeugt werden.

Es wird nix ausgegeben, bzw nur die 0 nachdem auf den Rahmen geklickt wurde.
 
for(int z=0; z==24; z++)
{
if(std == z)
{

ist doch das gleiche wie
int z = std;
oder nicht?
oder gleich std statt z verwenden..

-------

> Es wird nix ausgegeben, bzw nur die 0 nachdem auf den Rahmen geklickt wurde.

na sei froh dass nicht irgendwo ein Bamu umgefallen ist..
bzw. eine solche Aussage macht nur Sinn, wenn man sagt, was stattdessen passieren soll
 
schon mal bemerkt das du seg1 und seg2 benutzt, die leer sind?
benutz mal:
Code:
  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);
         }
      }

der trick liegt in zeile 5, da musst du natürlich die arrays mit den coordinaten nehmen!

Gruß Tobi

EDIT: Ach ganz vergessen, natürlich musst du im Konstruktor auch digit zuweisen:
Code:
   public Segment7(int digit)
   {       
      super();
      this.digit = digit;
   }
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben