Fonts, Icons, Bilder in JavaFX Anwendung

MiMa

Top Contributor
ich möchte gerne meine Anwendung etwas mehr mit Icons und Bildern ausstatten.
Ich habe einige YT Videos gesehen in denen Font Awesome verwendet wurden. Im Gunde eine schöne Lösung nur das diese Fonts nur eine Handvoll Icons kostenfrei zur Verfügung stehen. Für eine private Anwendung also nicht zu gebrauchen. Dann bin ich auf SVG Grafiken gestossen die auf Vektoren basiert. Zum einbinden in JavaFX Anwednungen habe ich gelesen, müssen Bibliotheken wie Batik verwendet werden. Ich habe die depencity in die POM eingetragen und wurde auch eingebunden. Aber leider habe ich es noch nicht hinbekommen in einer FXML eine SVG Grafik anzeigen zu lassen.

Wird das noch weiterentwickelt, da im Reposity die Datumsangaben BatikUtils von 2009 zu sehen sind?
Reposity Link Maven

Apache XML Batik Tool

Aktuell habe ich ein paar SVG Dateien nach PNG Konvertiert, was schon ziemlich aufwendig ist wenn es mehr wird. Daher würde ich gerne auf SVG Grafiken zurückgreifen.

Über unterstützung würde ich mich freuen.

Vielen Dank
 
Zuletzt bearbeitet:
Also Apache Batik bietet eine Swing Komponente. Diese könntest Du in einem SwingNode darstellen. Aber ich habe keine Ahnung, ob Du das in einem fxml mit SceneBuilder einrichten kannst. Aber Du kannst natürlich ein eigenes JavaFX Control erstellen, welches ein SwingNode mit dem Batik Control bereit stellt. Dann sollte es auch in SceneBuilder nutzbar sein.

Eine andere Library wäre JFoenix - diese bietet auch eine JavaFX Komponente. Und bietet auch svg glyphe font unterstützung an, so ich die Klasse SVGGlyphLoader richtig verstanden habe (Aber mit dem Thema kenne ich mich nicht aus, daher kann ich da die Möglichkeiten nicht wirklich bewerten.)
 
In Scene Builder habe ich ImageViews deklariert die ich im Kontroller füllen kann. Das habe ich bei Buttons gemacht bei denen sich das Icon wechselt, wie bei einem Button der drei Zustände schaltet.
Ich habe hier einen Kontroller für MP3 Dateien in dem ich die Darstellung mit SVG Testen kann.
Java:
@FXML
    private void initialize() {
        if (mp3Fenster != null) {
            mp3Fenster.setVisible(true); // Sichtbar/Unsichtbar machen
            ivDateiEndungMP3.setImage(new Image("icons/dateiendungen/512mp3.png"));
        }
    } // initialize
Die fx:id "ivDateiEndungMP3" habe ich erstellt um programmatisch ein Bild anzeigen lassen zu können. Darin wollte ich mal probieren ein SVG anzeigen zu lassen. Ich plane auch eigene Bilder zu erstellen die als SVG abgelegt werden sollen.
Auf Apache Batik bin ich halt gestossen. Ob das die optimale Lösung für JavaFX mit FXML Dateien kann ich nicht sagen, da ich mit der GUI Programmierung noch nich so viel Erfahrung habe.
 
Zum Thema Batik, da gab es mal einen Bug der für Probleme sorgte mit dem neuen Modul-System in Java. Das war Stand 2020. Ob der noch akut ist weiß ich nicht.

Aber wenn dir die Lösung mit FontAwesome so gut gefällt, es gibt da noch eine sehr umfangreiche Bibliothek namens Ikonli. Und wenn ich das richtig verstehe kann man damit auch selbsterstelle Image Fonts laden. Also für ein paar einzelne SVGs sicherlich ein Schießen mit Kanonen auf Spatzen, aber wenn du dir eine größere SVG Sammlung erstellen möchtest vielleicht eine Alternative.

 
Vielen Dank für die Infos.
Ich wollte halt die Icons etwas schärfer dargestellt haben und vor allem mir das ganze konvertieren zu png ersparen.
Ausserdem habe ich dann diese Seite hier gefunden die wohl in SVG vorliegen
IconGram
 

Zurück
Oben