Ankündigung

Einklappen
Keine Ankündigung bisher.

User helfen User - Programmieren

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Hier die Methode mit der Schleife http://pastebin.com/VuZxbeLw

    Und hier die Main mit den 3 Objekten. Die Schleife laeuft im ViewCustomer
    http://pastebin.com/iKN5whjv

    Kommentar


      Ich sehe keine while(true) SChleife, nur eine while(i<10).

      Anmerkungen:
      - Der Thread macht keinen Sinn, weil er genau einen Befehl ausführt, der wohl synchron ist.
      - Wenn du schon nichts mit deiner Exception anfängst, dann benutz zumindest Multi Catch, damit du nicht so Sachen hast wie "try { try {} catch } catch"
      - Man überschreibt heutezutage Thread nicht mehr, sondern erstellt Runnable: new Runnable() {@Override public void run() {}}; und übergibt das einem Thread(pool)


      Du schickst in der Schleife ein Paket weg und holst dir eine Antwort. Das warten dauert natürlich.
      Also startest du die Schleife in einem Thread und machst dort dein io und aktualisiert das Label. Dann springt nach dem starten des Thread der Programmfluss wieder in deine main Methode und er erstellt das 3. Objekt.
      Warum musst du dir überhaupt 10 mal das Datum holen? Und warum muss das Label in einem extra Thread geschrieben werden? Dauert das so lange? Falls ja, kannst du da auch schnell ne RaceCondition produzieren, da du null synchronisierst. Lock benutzen z.b. löst das Problem schon.

      Kommentar


        Ich soll mir das Datum dauerhaft per UDP Anfrage von einem Server holen und dieses in meiner GUI auf dem Label ausgeben. Ich muss also den Text des Labels jede Sekunde aendern und damit mir die GUI nicht einfriert muss ich das irgendwie mit invokelater loesen. Bei JavaisteineInsel wird das ganze dann mit dem Thread geloest, das habe ich 1zu1 aus dem Buch kopiert.

        Danke fuer deine ausfuehrliche Antwort, ich werde mich morgen damit beschaeftigen :*

        Kommentar


          Wenn du die UDP Anfrage jede Sekunde machen musst, solltest du einen Scheduled Timer erstellen. Beim Updaten des Labels musst du aber auf jeden Fall synchronisieren: Du lockst einfach kurz ein gemeinsames Objekt, was sich alle TimerTasks teilen und unlockst wenn das Label geupdated ist. Falls gelockt ist, muss der TimerTask warten. Du musst nur aufpassen, dass die TimerTasks nicht auflaufen und dann am Ende eine riesen Warteschlange erzeugt wird; dann stimmt die Uhrzeit von deinem Label nämlich nicht und veraltet.

          Die GUI friert dir nur ein, wenn der Programmfluss irgendwo hängt und der GUI Loop dadurch auch stoppt. Dann hast du das schöne "Die Anwendung reagiert nicht mehr". Also einfach einen Timer starten (der TimerTask wird als neuer Thread ausgeführt) und im Prinzip sollte es dann schon laufen.

          Kommentar


            TimerTask rocks ! wow so einfach ... 3 zeilen und schon funktioniert alles danke dafuer

            Kommentar


              Habs jetzt doch anders gelöst. Tutor meinte dass die TimerTask für GUI veränderungen schlecht ist, da es nix mit der GUI zu tun hat.
              Hab jetzt den swing.Timer verwendet, damit klappts super :) Danke für die Hilfe stFUH

              Kommentar


                Joa, bin kein Frontend Entwickler ;)

                Kommentar


                  hey elite,

                  bräuchte mal eure hilfe.
                  komme bei folgender aufgabe nicht weiter:

                  Wir sollen folgendes in C programmieren mittels einer schleife:

                  **********
                  _*********
                  __********
                  ___*******
                  ____******
                  _____*****
                  ______****
                  _______***
                  ________**
                  _________*
                  sprich jede zeile ein * weniger,dafür ein Leerzeichen.

                  Mein Ansatz war ne for schleife innerhalb einer anderen for schleife, komme aber einfach nicht weiter...

                  Kommentar


                    int i, j;
                    int imax = 10;
                    char s[imax];

                    for (i=0;i

                    Kommentar


                      hab ne frage zu struct in c

                      Ich habe 2 structs z.b.

                      typedef struct{
                      int nummer;
                      int plaetze;
                      }hoersaal;

                      typedef struct{
                      char * name;
                      int etage;
                      }gebaeude;

                      Nehmen wir an ich habe den Variablen Werte hinzugefügt, möchte sie nun über eine Funktion abrufen.

                      void ausgeben(const Gebaeude * geb)
                      {
                      printf("Gebaeude %s : " geb->name);
                      printf("Etage %d : " geb->etage);
                      }

                      Kann ich mit dieser Funktion, so wie ist, auf beide structs zugreifen? Sprich mit der Funktion die Werte aus Gebaeude sowie Hoersaal ausgeben

                      Kommentar


                        Ansi-C ist bei mir zu lange her, aber beachte, dass name ein Zeiger ist während etage eine Variable ist. Rein intuitiv kannst du die nicht auf die gleiche Weise ansprechen, da du nicht an name interessiert bist sondern an das, worauf name zeigt.

                        Kommentar


                          Das ansprechen der Variablen in Gebaeude funktioniert so, habe es auch so in meinem Programm stehen und der Compiler kompiliert ganz normal durch.
                          Meine Frage ist nur, ob ich mit der Funktion auch die Variablen aus dem struct "hoersaal" ansprechen kann.
                          In der Aufgabe steht jedenfalls, dass wir genau diese Funktion benutzen sollen und damit alles ausgeben. Ich schaff es jedoch nicht die Variablen aus hoersaal auszugeben.

                          Kommentar


                            nein kannst du nicht. such mal nach vererbung, dann siehst du wie es gemacht werden muss.

                            Kommentar


                              moin Elite ich hätte mal ne Frage, konnte mit den ausgaben der googlesuchmaschine nix anfangen...

                              Mein Problem(java): Ich hab ein Bild das ich je nach Bedarf immer um eine gewisse grad Zahl rotieren will... nur leider verschiebt sich beim rotieren immer der ursprungspunkt und verschwindet zb. aus dem bildbereich.... gibs eine möglichkeit oder eine Formel womit ich das bild rotieren kann aber sich gleichzeitig der urspungspunkt nicht verändert?

                              [spoiler]
                              @Override
                              public void paintComponent(Graphics g){
                              double a = Math.toRadians(13.0);
                              Graphics2D g2d=(Graphics2D)g;
                              g2d.translate(0, 100); //

                              Kommentar


                                Du musst eben dein translate entsprechend anpassen, damit du den ursprung wieder zurückschiebst. Du kennst ja die Längen deines Bildes und dann ist es alles nur noch ein bisschen Trigonometrie.
                                Mal dir einfach mal die Situation auf einem Papier auf, benenn die Seiten und Winkel und schau dir die Abhängigkeiten an, dann sollte dir das soweit klar werden.

                                Kommentar

                                Lädt...
                                X