Prozessvisualisierung

mu7ti

Mitglied
Hallo liebe Leute,

ich bräuchte mal dringend eure Hilfe. Im Rahmen meiner Bachelorarbeit soll ich eine Prozessvisualisierung in Java Programmieren. Dabei soll der Materialfluss in einem Walzwerk dargestellt werden. Die Mitarbeiter sollen auf dem Bildschirm genau sehen können, in welcher Walze sich das Material gerade befindet. Die Daten über die Geschwindigkeit des Materials und einige Weitere Daten sollen einer Datenbank entnommen werden. Zusätzlich sollen Daten wie die Stromaufnahme der Walzen in einem Balkendiagramm dargestellt werden. Die Grundlagen in Java habe ich mir bereits angeeignet und wäre nun in der Lage, einfache GUIs in Swing aufzubauen. Wie soll ich nun weiter machen? In welche Themen muss ich mich einarbeiten ? Hauptsächlich würde es mich interessieren, ob das ganze mit viel fleiß in 2 Monaten machbar ist?
Ich wäre für jede Hilfe Dankbar.
 

httpdigest

Top Contributor
Hast du dir denn schon Gedanken gemacht, wie du das ganze visualisieren möchtest? Also erstmal völlig losgelöst von möglichen Implementierungen. Möchtest du daraus wirklich eine möglicherweise sogar animierte Grafik erstellen oder reicht auch einfach eine Tabellenansicht. Die einzelnen Walzen könnten z.B. einfach Spalten oder Zeilen in einer Tabelle sein und die Materialien sind dann entsprechend das andere (also Zeilen oder Spalten) und in der Zelle wird markiert, wenn ein Material gerade in einer jeweiligen Walze ist oder wie lange es bereits dort verweilt oder noch verweilen wird.
 

mu7ti

Mitglied
Vielen Dank für die schnelle Antwort. So in etwa soll das dann am Ende aussehen. Das Material würde sich dann zwischen den gezeichneten Kreisen bewegen.Zwischenablage01.jpg
 

mu7ti

Mitglied
Das ist nur ein Layout, das ich mit einem Grafikprogramm erstellt habe. Jetzt soll ich das ganze in Java erstellen und zusätzlich die Animation einbauen.
 

Javinner

Top Contributor
@mu7ti
Falls du NetBeans benutzt, würde ich an deiner Stelle den bereitgestellten GUI-Builder benutzen.
Das ist wesentlich einfacher, als jedem Element ein Platz zuzuweisen.
Die Animation soll, so vermute ich, so ablaufen, dass jeder der grünen Kreise die Farbe wechseln soll, wenn das Material gerade dort bearbeitet wird. So kannst du dazu Icons verwenden. Sonst kann ich dir die und die Seite empfehlen, um dich besser mit dem Thema vertraut zu machen. Kannst dich dann melden, wenn du hier und da Fragen hast. Zwei Monate? Zeit ist relativ, ich würde an deiner Stelle keine verschwenden ;)
 

mu7ti

Mitglied
Also das Material (in diesem Fall der Draht) soll sich tatsächlich zwischen den Kreisen bewegen bewegen.
Ist das dann mit Java Swing machbar? Oder brauch ich da noch andere APIs?
 

mu7ti

Mitglied
Also, jetzt mal etwas konkreter gefragt, ist diese Aufgabe (GUI erstellen wie auf dem Layout + Animation) mit dem Swing GUI Toolkit machbar oder muss ich mich dafür in JavaFX einarbeiten ?
 

mrBrown

Super-Moderator
Mitarbeiter
Ja, generell ist das auch mit Swing machbar, ich halte JavaFX aber für die sinnvollere Lösung.
2 Monate sind ohne Vorwissen aber sehr optimistisch.
 

Javinner

Top Contributor
@mu7ti
Es ist garantiert machbar! Jedoch gilt, laut einiger, dass Swing tot ist und nicht weiter entwickelt wird. Somit ist JavaFX die Zukunftsmusik, bzw. DIE aktuelle Geschichte. Es kommt nun auf dich an, was du machen willst, ob du dich in etwas totgesagtes einarbeiten willst. Für beide gibt es mittlerweile richtig gute Tutorials, deine Entscheidung!
 

mu7ti

Mitglied
Also ist euer beider Rat, dass ich mich zunächst in JavaFX einarbeite ?!
Wie geht es dann weiter ? Wie bekomme ich das Material dazu sich zu bewegen, und das mit einer vorgegebenen Geschwindigkeit?
 
Das kommt drauf an, was du danach vorhast. Für ein neues Projekt was neues lernen ist cool, aber Zeit ist begrenzt.

JavaFX ist zwar die Zukunft, aber viele bestehende Projekte bauen halt noch auf Swing oder sogar AWT. Zwar wird die API selbst nicht weiterentwickelt, aber es gibt noch zig Leute, die lieber irgendwas in SWing anfangen als in JAvaFX. Begründung funktioniert in etwa so: Für Swing find ich 2000 Leute für mein Projekt, für JavaFX vielleicht ein Dutzend. (Ok, leicht übertrieben ;) ) Wenn du "von Grund auf" startest und niemals nicht in die Verlegenheit kommen wirst, alten Code von Mitarbeitern, die es nicht mehr gibt zu warten, dann JavaFX.

Was du suchst, sind "JavaFX Animations", zB hier: https://www.tutorialspoint.com/javafx/javafx_animations.htm
 

mu7ti

Mitglied
Dann bleibt mir wohl nichts anderes übrig, als mich in JavaFX einzuarbeiten. Gibt es denn ein Tutorial, das Sie mir empfehlen können? Oder war diese Seite bereits als eine Empfehlung gedacht ?
 

mrBrown

Super-Moderator
Mitarbeiter
Also ist euer beider Rat, dass ich mich zunächst in JavaFX einarbeite ?!
Das kommt auf dein Vorwissen an, das klang bisher so, als hast du sowohl mit Swing auch als JavaFX keine Erfahrung?
Dann eindeutig pro JavaFX. Solltest du aber schon Swing-Erfahrung haben, solltet du je nach Zeitdruck einfach damit arbeiten und dich nicht in was neues einarbeiten.
 

mu7ti

Mitglied
Wäre es denn schwerer das ganze mit Swing zu machen ? Also würde sich der Aufwand -in Bezug auf die Bachelorarbeit, nicht in Bezug auf meine zukünftige Karriere - lohnen den ich erbringen muss um JavaFX zu erlernen oder wäre ich mit Swing schneller am Ziel, da ich hier zumindest schon die Grundlagen beherrsche?
 

AndiE

Top Contributor
Für mich ist nicht so die grafische Umsetzung im Vordergrund. Soweit ich mich erinnere, werden beim Drahtziehen der Draht auf der einen Seite ab- und auf der anderen Seite aufgewickelt, wobei sich mit sinkendem Durchmesser die Länge erhöht. Wenn ich jetzt vier Stationen habe, dann werden dort vier Lose bearbeitet, die nacheinander die Stationen wechseln, oder bei irgendeiner ihre Endlänge erreicht haben. Dann gäbe es fünf Lagerplätze, wo Draht in verschiedenen Stärken aufbewahrt wird. Dann braucht man auch die Umdrehungszahlen der Spindeln, aber nicht die Walzkraft, weil Drähte gezogen werden.
 

mrBrown

Super-Moderator
Mitarbeiter
Mal nebenbei bemerkt: im Unterschied zu JavaFX wird Swing/AWT auch in Java 11 enthalten sein...
JavaFX war noch nie in Java enthalten, nur in der Oracle-Variante ;)

Im Unterschied zu Swing und AWT ist es aber immerhin halbwegs modern und das auslagern ist eher Vorteil als Nachteil...



Wäre es denn schwerer das ganze mit Swing zu machen ? Also würde sich der Aufwand -in Bezug auf die Bachelorarbeit, nicht in Bezug auf meine zukünftige Karriere - lohnen den ich erbringen muss um JavaFX zu erlernen oder wäre ich mit Swing schneller am Ziel, da ich hier zumindest schon die Grundlagen beherrsche?
Kommt drauf an, wie tief die Grundlagen sind.
JavaFX macht das Interface-Design schon deutlich einfacher, mMn, und auch sowas wie Animationen ist damit deutlich einfacher umzusetzen.
 

mu7ti

Mitglied
Mir sagte gerade ein Freund der selbst auf der Arbeit viel mit Java zutun hat, dass ich nach eventuellen Frameworks suchen sollte. Kennt Ihr vll passende Frameworks dazu ?
 

mihe7

Top Contributor
JavaFX war noch nie in Java enthalten, nur in der Oracle-Variante
Oracle hat seinerzeit JavaFX als Nachfolger von Swing angekündigt und mit dem JDK ausgeliefert. Man hätte erwarten können, dass Swing durch JavaFX ersetzt wird. Ironischerweise passiert jetzt genau das Gegenteil: AWT/Swing bleiben, JavaFX fliegt. Für JavaFX mag das einerseits ein Vorteil sein, andererseits wird es damit zu einem x-beliebigen UI-Toolkit für Java. Ich bin auf jeden Fall gespannt, wie sich die Sache weiterentwickelt.

@mu7ti Framework wofür?
 

mrBrown

Super-Moderator
Mitarbeiter
Oracle hat seinerzeit JavaFX als Nachfolger von Swing angekündigt und mit dem JDK ausgeliefert. Man hätte erwarten können, dass Swing durch JavaFX ersetzt wird. Ironischerweise passiert jetzt genau das Gegenteil: AWT/Swing bleiben, JavaFX fliegt. Für JavaFX mag das einerseits ein Vorteil sein, andererseits wird es damit zu einem x-beliebigen UI-Toolkit für Java. Ich bin auf jeden Fall gespannt, wie sich die Sache weiterentwickelt.
Ja, aber eben nur mit dem Oracle-JDK, nicht mit dem Open- oder sonstigem JDK ;) Es ändert sich daher auch nur für Oracle-JDK-Nutzer etwas.
Da gabs oft genug das Problem, dass Programme auf einem Rechner Problemlos liefen, und auf dem anderem nicht.
Bisher musste man dann händisch OpenJFX installieren, das dürfte damit einfacher werden.

"x-beliebig" wird's für mich nicht, es bleibt zumindest meiner Ansicht nach immer noch der Swing-Nachfolger.


Ich weiß auch nicht genau wofür :D . Er meinte nur, ich solle nach Frameworks Ausschau halten.
Das ist jetzt ungefähr so, wie im Baumarkt fragen, ob sie dir Werkzeug empfehlen können, du weißt nur noch nicht wofür ;)
Was man in deinem Fall u.U. nutzen kann ist JPA, dürfte aber etwas zu viel sein, deinen bisher genannten Anforderungen nach.
 

mihe7

Top Contributor
"x-beliebig" wird's für mich nicht, es bleibt zumindest meiner Ansicht nach immer noch der Swing-Nachfolger.
Es ist weder im Standard noch künftig im de facto Standard (Oracle) enthalten. Diesbezüglich unterscheidet sich JavaFX somit nicht mehr von jedem anderen x-beliebigen UI-Toolkit. Wie gesagt: ich bin gespannt, wie sich die Sache entwickelt.
 

ralfb1105

Bekanntes Mitglied
Hallo,

Vielleicht kannst Du die Bibliothek JFreeChart für die dynamische Darstellung der Stromstärken benutzen. Ich habe das mal für die Darstellung von TPS Daten einer Datenbank genutzt. Als Referenz hier der Link zu einem Beispiel hierfür aus dem Forum: https://www.java-forum.org/thema/dy...n-perfomance-daten.181444/page-4#post-1154662. Ohne mich in die Diskussion in Pro-Contra Swing - Java-FX einzumischen, ich habe es mit Swing gemacht ;-)

Gruß

Ralf
 

mu7ti

Mitglied
Hallo Leute,

ich habe mich in zwischen ein wenig in JavaFX eingearbeitet und wie Ihr auf den Bildern sehen könnt, habe ich bereits das Login und die Hauptseite programmiert. Bevor ich euch jetzt einige Fragen stelle, wäre es schön, wenn Ihr folgende Dinge bei euren Antworten beachtet. Und zwar soll das fertige Programm am Ende auf einem Server laufen und die Mitarbeiter sollen sich zur jeder Zeit von einem beliebigen Computer aus in das Programm einloggen und die Prozesse verfolgen können. Die Fragen die ich mir nun stelle sind, ob ich für das Login eine lokale Datenbank wie z.B sqligt nehmen muss oder besser keine lokale DB nehme. Weiterhin wüsste ich gern, wie ich das mit den Walzen genau umsetze. Mache ich da von den Shapes gebrauch oder binde ich einfach mein Layout ein, das ich zu Anfangs hochgeladen hatte? Falls ich das Layout als ImageView einbinden soll, wie bekomme ich später zwischen die Walzen meine Animation eingefügt? Ich möchte mich im voraus bedanken und hoffe, dass mir jemand helfen kann.

Screenshot (2).png Screenshot (4).png
 

mu7ti

Mitglied
Hey,

wieso bekomme ich denn keine Hilfe mehr :( ???

Kann mir denn zumindest jemand erklären, wie es in JavaFX mit den Threads abläuft? Die JavaFX-Application-Thread führt meines Wissens nach die start()-Methode aus und ist somit für die Erstellung des ScenenGraphen zuständig?! Die EventHandler werden soweit ich es verstanden habe in der EventQueue ausgeführt - die z.B nach einem Button-Klick gestartet wird. Kommen sich die beiden Threads nicht dadurch in die Quere? In Swing musste man doch dafür alles in die EventQueue verlagern, damit die Erstellung der Komponenten und die EventHandler sich nicht gegenseitig stören.
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Und zwar soll das fertige Programm am Ende auf einem Server laufen und die Mitarbeiter sollen sich zur jeder Zeit von einem beliebigen Computer aus in das Programm einloggen und die Prozesse verfolgen können. Die Fragen die ich mir nun stelle sind, ob ich für das Login eine lokale Datenbank wie z.B sqligt nehmen muss oder besser keine lokale DB nehme.
Wenn mehrere von beliebigen Computern aus die Datenbank nutzen sollen, muss die natürlich auf einem Server laufen. Lokal läuft dann nur die JavaFX-Anwendung.

Mache ich da von den Shapes gebrauch oder binde ich einfach mein Layout ein, das ich zu Anfangs hochgeladen hatte? Falls ich das Layout als ImageView einbinden soll, wie bekomme ich später zwischen die Walzen meine Animation eingefügt?
Sinnvoll ist es wahrscheinlich, passende Shapes zu nutzen, und die zu animieren.
Das Layout als Bild im Hintergrund hat nicht viel Sinn.

Kann mir denn zumindest jemand erklären, wie es in JavaFX mit den Threads abläuft? Die JavaFX-Application-Thread führt meines Wissens nach die start()-Methode aus und ist somit für die Erstellung des ScenenGraphen zuständig?! Die EventHandler werden soweit ich es verstanden habe in der EventQueue ausgeführt - die z.B nach einem Button-Klick gestartet wird. Kommen sich die beiden Threads nicht dadurch in die Quere? In Swing musste man doch dafür alles in die EventQueue verlagern, damit die Erstellung der Komponenten und die EventHandler sich nicht gegenseitig stören.
Alles was du beschreibst, läuft in *einem* Thread.
Nur wenn ein anderer Thread GUI-Änderungn durchführen soll, muss das in den Thread verschoben werden. Das ist nicht anders als in Swing
 

mu7ti

Mitglied
Hey,

ich danke dir für deine schnelle Antwort. Wenn ich das richtig verstanden habe, dann ist in JavaFX der JavaFX-Application-Thread das Äquivalent zum EventQueue in Swing?!
 

mu7ti

Mitglied
Hallo liebe Leute,

ich stehe vor einem Problem. Ich möchte eine TableView von einem Controller eines anderen Stages aus füllen. Und zwar soll sich nach einem Klick auf den Hinzufügen-Button, welches sich in der selben Stage wie die TableView befindet, eine neue Stage öffnen. Hier soll es möglich sein die Daten des neuen Kunden einzutragen und im Anschluss mit einem Klick auf den add-Button , welches sich in der neuen Stage befindet, die Daten in die Tabelle zu schreiben. Woraufhin sich die zweite Stage auch wieder schließen soll. Auch wenn ich noch nicht genau weiß, wie so etwas konkret umzusetzen ist, fallen mir da zwei wahrscheinlich mögliche Vorgehensweisen ein. Die erste Vorgehensweise die mir da einfällt ist, dass den beiden Controllern die selbe ObservableList übergeben wird und diese mit einem ChangeListener versehen werden. Die andere Möglichkeit die mir da einfallen würde, wäre, dass man in der zweiten Stage die Tabelle des ersten Stages mit dem FXMLLoader lädt und somit dann Zugriff auf diese hat. Falls ich richtig liegen sollte, würde ich mich über die konkrete Umsetzung für eines der beiden Vorgehensweisen freuen.
 

MoxxiManagarm

Top Contributor
Ich empfehle dir für sowas einen neues Thread zu eröffnen. U.a. Ich bin eigentlich von 4-seiten-langen Threads total abgeschreckt ^^ Mit einem neuen unabhängigen Thread erhöhst du die Chance enorm, dass dir geholfen wird.
 

mu7ti

Mitglied
Hey, danke für deine schnelle Antwort. Wie genau müsste ich das denn dann machen ? Einen ScheduledService in der initialize()-Methode starten der dann durchgehend meine Tabelle aktualisiert? Wäre das denn auch die elegantere Vorgehensweise? Und wo müsste ich diesen Thread dann wieder schließen ?
 

mu7ti

Mitglied
Von Conversation threading habe ich noch nie was gehört. Könntest du mir vll kurz erklären, was das genau macht? Und wie würde das in meinem Falle eingesetzt werden ?
 

Neue Themen


Oben