Libraries für AWT für andere Grafik-Frameworks tauglich machen

inflamer

Bekanntes Mitglied
Hallo Leute,

ich habe vor einigen Jahren für meine Anwendung eine eigene Barcode-Bibliothek geschrieben, welche von mir seither beständig weiterentwickelt wurde, sodass mittlerweile eine solide 1D-Barcode-Bibliothek daraus geworden ist.

Da auch Features dabei sind, welche etwa ZXing oder Barcode4J so nicht haben (z. B. wem das was sagt: Kompensation des Tinteverfließens auf Inkjets (sog. Strichbreitenreduktion) sowie Anpassung der Ausgabe an eine konkrete Auflösung (quasi unverzichtbar bei Ausgabe auf Etikettendruckern < 600 dpi) und einiges mehr. ), will ich die Bibliothek nun als OpenSource "raushauen".

Was derzeit allerdings noch nicht so optimal ist, ist dass die Ausgabe stets auf eine übergebene java.awt.Graphics2D-Instanz erfolgt. Dadurch wird die Bibliothek für JavaFX und andere Gfx-Frameworks doch wohl von vorn herein nicht zu gebrauchen sein oder irre ich mich da?

Gibt's hierfür eine praktikable Lösung? Danke!
 
Was derzeit allerdings noch nicht so optimal ist, ist dass die Ausgabe stets auf eine übergebene java.awt.Graphics2D-Instanz erfolgt. Dadurch wird die Bibliothek für JavaFX und andere Gfx-Frameworks doch wohl von vorn herein nicht zu gebrauchen sein oder irre ich mich da?
Das ist nur teilweise richtig. Du nutzt dann zwar awt, aber auch das steht unter JavaFX zur Verfügung. Das ist ja Bestandteil des eigentlichen Java Frameworks.

Und das Graphics2D setzt nicht zwingend eine AWT Komponente voraus. Du kannst hier z.B. auch mit BufferedImage als Ausgangssituation arbeiten.

Um da dann auf JavaFX im Detail einzugehen: Um das dann anzuzeigen, müsste man aus dem BufferedImage ein JavaFX Image machen. Aber dazu bringt JavaFX auch alles mit - hier wäre es z.B. SwingFXUtils.toFXImage.
 
Hi Konrad,

hmm, tja... das klingt tatsächlich recht umständlich. Ich muss sagen, dass ich mit JavaFX bisher null Berührung hatte, habe allerdings irgendwo aufgeschnappt, dass da sogar eine eigene Print API mit an Bord ist. Spätestens da könnte es kritisch werden, gerade bei Barcodes, wo es hinsichtlich Druckgenauigkeit idR. auf etliche Stellen nach dem Komma drauf ankommt. Mit Image-Umwandlung etc. kommt man da denke ich erstmal nicht weit...
 
Im Grunde interessiert mich lediglich, ob eine JavaFX-Anwendung eine Library wie Barcode4J, welche ebenfalls "nur" auf Graphics2D zeichnet, ohne große Probleme theoretisch nutzen könnte. Auch (!) für eine Ausgabe auf einen Drucker.
 
Im Grunde interessiert mich lediglich, ob eine JavaFX-Anwendung eine Library wie Barcode4J, welche ebenfalls "nur" auf Graphics2D zeichnet, ohne große Probleme theoretisch nutzen könnte. Auch (!) für eine Ausgabe auf einen Drucker.
Ja, genau das war, was ich versucht habe zu sagen. Dieses zeichnen auf Graphics2D ist eine Basisfunktionalität des Frameworks und das funktioniert - egal was Du für eine UI baust.
 
Ok, vielen Dank! Dachte, da JavaFX u.a. einen ganz eigenen Thread hat, es mit den AWT-Klassen auch sonst nicht viel am Hut hat...

Danke für die Hilfe!
 
Ok, vielen Dank! Dachte, da JavaFX u.a. einen ganz eigenen Thread hat, es mit den AWT-Klassen auch sonst nicht viel am Hut hat...
Ja, die anderen Frameworks haben an für sich einen eigenen Thread für die Events. Aber das sind Dinge, an die die Entwickler auch gedacht haben. So gibt es Lösungen, um z.B. auch die Elemente von JavaFX und Swing zu mischen.
So kann man JavaFX Elemente mit dem JFXPane in swing einbinden: 3 Integrating JavaFX into Swing Applications (Release 8) (oracle.com)
In der anderen Richtung wäre es SwingNode, das man verwenden könnte: Embedding Swing Content in JavaFX Applications | JavaFX 8 Tutorials and Documentation (oracle.com)

Das sind also keine Welten, die zwingend getrennt sein müssen.

Das aber nur als kleine Information. Für Deine Fragestellung ist es egal, denn da geht es nicht um awt oder swing UI Komponenten sondern nur um einzelne Klasse, die unabhängig von dieser UI Thematik verwendbar sind.
 

Zurück
Oben