JavaFX Wie A4-Seite in meiner Anwendung repräsentieren

BigMemo007

Aktives Mitglied
Hallo Comunity,


ich möchte eine neue App bauen, die zwar technisch versierten, aber extrem IT unaffienen Handwerkern in meinem Bekanntenkreis, das Schreiben von Angeboten und Rechnungen so einfach wie möglich machen soll. Aktuell schreiben sie die in Word und Excel und müssen sehr viel immer wieder neu tippen. Komplizierte Software könnten sie nicht bedienen. Deswegen habe ich mir gedacht, eine App zu schreiben, wo man nur Kontakte, Arbeiten die angeboten werden und eine Materiallliste einpflegen kann. Aus diesen Daten sollen dann Angebote und Rechnung einfach erstellt werden können.

Ich bin noch in der Requirement-Phase und bei jetzt schon auftauchenden Problemen in der Lösungsfindungsphase. Ich möchte nach dem Wasserfallmodell arbeiten.

Meine Systeme:
Eclipse 2020-12
MAVEN
Java-FX für GUI
und für alles eigentlich offen solang JAVA


Meine Probleme die gelöst werden müssen, damit ich nachher mit dem Klassendiagramm anfangen kann:

1. Angebote und Rechnungen werden ja in DIN-A4 Größe an Kunden versendent. Wie kann ich ein DIN-A4-Papier in meiner App darstellen? Gibt es Bibilotheken im Maven-Rep für Java, die ich verwenden kann und mein Leben vereinfachen?

Wenn nicht, wie ist folgende Idee:

Eine Gridpane nehmen, die in A4-Größe (cm in Pixel umrechnen) machen und dort folgende Elemente als Label / TextArea hinzufügen:

-Ganz oben Kopfzeile (Label da eine Zeile)
-Dann Kundenadresse (TextArea)
-Rechts neben Kundenadresse eben ein Label mit Informationen über das Angebot oder Rechnung wie etwa Erstellungsdatum, Nr, usw (TextArea)
-Dann Arbeiten/Material und Preis (TextArea)
-unten die Kummulierung der Preise (Label)
-Danach ein Feld Für Umsatzsteuer (Label)
-ganz unten die Fußzeile (Label)

Das ganze soll normgerecht aufgebaut werden. Ich müsste mir ein schönes Angebots- und eine schöne Rechnungsvorlage nehmen, die Bereiche ausmessen und die Java-FX Komponennten entsprechen groß machen und positionieren. Die TextAreas müssen nicht beschreibbar sein. Den Inhalt holen sie aus der Kundenliste, Arbeitsliste und Materialliste heraus.

Oder habt ihr bessere Ideen?


2. Wie gebe ich dann dieses Angebot oder diese Rechnung an den Druckauftrag des Systems weiter? Der User soll dort dann, wenn er ein PDF-Dokument haben will den MS-PDF-Writer nehmen und wenn er drucken will, seinen installierten Drucker auswählen.


3. Wie kann ich den Inhalt von meinen Objekten (Kontakte, Angebote, Rechnungen, Arbeiten, Material) sicher geschützt, also kryptisch verpackt, auf der Festplatte sichern? Soll ich die Objekte in ArrayLists reinpacken? Aber ArrayLists in Java-FX sind nicht serialisierbar meines Wissens.


Ich habe grad das Gefühl, wenn ich eine Lösung für diese Hürden habe, dass ich die App meistern kann 🙂
 
Ich möchte nach dem Wasserfallmodell arbeiten.
Ganz ganz starker Rat: Mach es nicht. Du wirst es soweiso ziemlich schnell über den Haufen werfen.

1. Angebote und Rechnungen werden ja in DIN-A4 Größe an Kunden versendent. Wie kann ich ein DIN-A4-Papier in meiner App darstellen?
Warum willst du denn mit JavaFX die ausgdruckte Rechnung nachbauen?

Grundsätzlich würd ich da zwei Anforderungen sehen: Eintragen der Daten (Kundenliste, Arbeitsliste und Materialliste nennst du ja selbst) und dann generieren der fertigen Rechnung.

Das Eintragen kann man doch über "schöne" Eingabemasken umsetzen ("Die TextAreas müssen nicht beschreibbar sein" klingt auch danach, als hättest du es geplant).
Das generieren der fertigen Rechnung kann dann direkt nach PDF passieren, und die PDF kann man dann anzeigen.

2. Wie gebe ich dann dieses Angebot oder diese Rechnung an den Druckauftrag des Systems weiter? Der User soll dort dann, wenn er ein PDF-Dokument haben will den MS-PDF-Writer nehmen und wenn er drucken will, seinen installierten Drucker auswählen.
Die PDF kannst du direkt in deiner Anwendung generieren.
"echtes" Drucken dann zB so: https://stackoverflow.com/questions/16293859/print-a-pdf-file-using-printerjob-in-java

3. Wie kann ich den Inhalt von meinen Objekten (Kontakte, Angebote, Rechnungen, Arbeiten, Material) sicher geschützt, also kryptisch verpackt, auf der Festplatte sichern? Soll ich die Objekte in ArrayLists reinpacken? Aber ArrayLists in Java-FX sind nicht serialisierbar meines Wissens.
Mit "kryptisch verpackt" meinst du verschlüsselt? Oder nur für den Nutzer nicht direkt les- und veränderbar?

Üblich wäre für sowas eine Datenbank, direkt Java-Objekte serialisieren ist eher unüblich.
 
Ich möchte nach dem Wasserfallmodell arbeiten.
Schauder. Das ist ein Relikt aus den 1960ern, längst tot und gehört sich mindestens genauso verboten wie Pong-Tutorials 🙂

Ich müsste mir ein schönes Angebots- und eine schöne Rechnungsvorlage nehmen, die Bereiche ausmessen
Neiiinnn, das ist in DIN 5008 genormt. Dazu findet man normalerweise genügend im Netz. Die aktuelle Fassung ist aus diesem Jahr (DIN 5008:2020), Du willst vermutlich Geschäftsbriefe nach Form B (für Fensterbriefumschläge) mit Informationsblock. Dafür ist PDF ja fast schon wie gemacht.
 
Grundsätzlich würd ich da zwei Anforderungen sehen: Eintragen der Daten (Kundenliste, Arbeitsliste und Materialliste nennst du ja selbst) und dann generieren der fertigen Rechnung.
Würde ich auch so machen. Das würde Dir das Leben wahrscheinlich auch etwas einfacher machen.
Wie wäre es, wenn du eine Rechnungsvorlage mit JasperReports o.ä. erstellst und mit den Angaben aus der JavaFX Anwendung befüllst?
 
Wie wäre es, wenn du eine Rechnungsvorlage mit JasperReports o.ä. erstellst und mit den Angaben aus der JavaFX Anwendung befüllst?
JasperReports hört sich super interessant an. Soweit ich es verstanden habe kann man mit dem JR-Editor seine Vorlage - in meinem Fall ein Angebot und eine Rechnung - bauen. Beim Bauprozess kann man Felder mit Variablen benennen. In Java erstellt man dann eine HashMap, die die Informationen, die auf die Vorlage kommen soll, z.B. auf das Angebot die Kundenadresse, beinhaltet. Hier ganz wichtig, der Key-Wert der HashMap muss genau mit der Variable von der Vorlage identisch sein. Dann mit dem JP-Objekt in Java die PDF erstellen lassen und als Datei ablegen lassen.

Ich sehe grad aber ein Problem. Die Posten in Angeboten oder Rechnungen sind leider nicht immer gleich in der Anzahl. Es wird bestimmt Rechnungen geben, die mehr Arbeiten und Materialien haben werden als andere. Da man in JR die Variablen statisch vergeben kann, swoeit ich das bis her sehen konnte, wird es problematisch. Daher meine Fragen:

1. Wie kann man Anzahl von Felder dynamisch vergeben?

2. Wenn Anzahl so hoch ist, dass eine Seite nicht ausreicht, kann JR auf Seite 2 gehen? Aber so, dass Kundenadresse, Datum, Ort, Nr, usw nicht nochmal mit gedruckt werden müssen.

3. Kann JR die Seitenanzahl mit aufdrucken?

4. Gbit es eine Vorlage für Angebote und Rechnungen, die opensource verwendet werden kann?
 
Ich habe bis jetzt nur an bestehenden Projekten mit JasperReports gearbeitet aber ich glaube für so einen Use Case ist es perfekt geeignet (kenne auch leider keine Alternativen).
Die Vorlagen würde ich in JasperSoft Studio bauen. Es gibt wohl auch noch eine andere Software (iReport), die ich aber gar nicht kenne.
1. Wie kann man Anzahl von Felder dynamisch vergeben?
Es gibt verschiedene Bänder (Abschnitte) in einem JasperReport. Bänder, wie z.B. der Header wiederholen sich nicht. Es gibt aber auch Bänder, die sich wiederholen, wenn mehrer Variablen übergeben werden. Das ist bei Rechnungen der Fall, wenn es mehrere Posten gibt. Somit kannst du einstellen, welche Felder statisch sind und welche dynamisch.
2. Wenn Anzahl so hoch ist, dass eine Seite nicht ausreicht, kann JR auf Seite 2 gehen? Aber so, dass Kundenadresse, Datum, Ort, Nr, usw nicht nochmal mit gedruckt werden müssen.
Ja, diese sich immer wiederholenden Felder werden auf einer nächsten Seite einfach fortgeführt.
3. Kann JR die Seitenanzahl mit aufdrucken?
Ja, dafür gibt es eine Variable, die du einfach auf deine Seite legen kannst. Diese wird automatisch gefüllt.
4. Gbit es eine Vorlage für Angebote und Rechnungen, die opensource verwendet werden kann?
Da kann ich leider nichts zu sagen und auf die Schnelle habe ich nichts gefunden. Ich denke, es wird schwierig was nach DIN5008 zu finden.
 
Vielen Dank für die Infos. Ich beschäftige mich aber wieder mit den Grundlagen von Java oder generell mit SW-Entwicklumg, um ein Zertifikat von LinedIn zu erhalten! Danach werde ich mich um meine Applikation weiter kümmern.
 

Neue Themen


Zurück
Oben