Kategorie: JavaFX

Java / JavaFX – Prüfen ob Mehrere Tasten gedrückt wurden

Hallo Zusammen,

hier ein kleines Snippet wie man ganz simpel in JavaFX prüfen kann ob mehrere Tasten gedrückt wurden:

 


//Welche Tasten sollen geprüft werden
KeyCodeCombination keyCodeCombination = new KeyCodeCombination(KeyCode.D, KeyCombination.CONTROL_ANY, KeyCombination.ALT_ANY);

//Hier die Aktion definieren welche nach zutreffen der Tastenkombination ausgeführt werden soll
KeyPressedListener keyPressedListener = () -> {
System.out.println("Du hast Strg+Alt+D gedrückt");
};

//In der ganzen Scene prüfen, alternativ kann die Prüfung auch nur auf einzelnen Layouts durchgeführt werden
scene.getAccelerators().put(keyCodeCombination, keyPressedListener);

remoteJux – Steuere deinen PC & Server mit deinem Smartphone

Hallo Leute,ic_launcher-web
in eigener Sache möchte ich euch mal mein kleines Projekt remoteJux vorstellen.

Was ist remoteJux?

Es handelt sich dabei um eine Server Software welche auf Java 8 basiert und einen Android App Client.

In dieser Kombination kann man Konsolen Befehle via Smartphone an den PC oder Server senden.
Somit kann man seinen gesamtes Server-System fernsteuern.

Natürlich alles OpenSource 😉

Woher bekomme ich es?

Die Android App gibt es im Google PlayStore
gplay_logo

Den dazugehörige Server kannst du auf BitBucket laden:
bitbucket logo

Falls du am Quellcode interessiert bist, den gibt es bei mir auf der BitBucket Seite:
https://bitbucket.org/rouven_h

Wie starte / konfiguriere ich den Server?

Server starten:
  • Java 8 installieren (DownloadLink)
  • Ausführen des Java Servers mit „java -jar remoteJuxServer.jar
Server konfigurieren (Nur bei Bedarf):
  • Beim ersten starten des Servers wird eine Datei erzeugt „remoteJux_server.properties
  • Diese Datei öffnen und Servername / Port beliebig anpassen (und merken)
  • Server neu starten, jetzt sollte in der Konsolenausgabe die neue Konfiguration ausgegeben werden

Wie konfiguriere ich die Android App?

  • Nach starten der App auf Einstellungen klicken
  • Falls eine abweichende Konfiguration erstellt wurde diese dort eintragen
  • Ansonsten die Standardwerte eintragen:
    Servername: IP oder DNS-Name des PCs/Servers auf dem der remoteJux Server läuft
    Port: 9998 (Standard)
Befehl konfigurieren:
  • Im Hauptfenster auf „+ Hinzufügen“ klicken.
  • Alle Werte ausfüllen, kurze Erklärung:
    Icon – Verschafft deinem Befehl einen visuellen Wiedererkennungswert (z.B. Einstellungs Symbol)
    Name – Der Alias für einen Befehl (z.B. Herunterfahren)
    Befehl – Der eigentliche Befehl welcher and den Server gesendet werden soll (z.B. sudo shutdown -h now)
    Gibt Text zurück – Bitte nur anhaken wenn der Befehl einen Rückgabewert hat z.B. ipconfig oder ifconfig
    Benutzereingabe erwartet: Funktion noch nicht entwickelt
  • Speichern klicken
  • Bei einem Klick auf den Pfeil auf der Rechten Seite wird der Befehl an den Server gesendet
  • Bei Bedarf kann auch auf dem Homescreen ein Widget für einen Befehl erstellt werden.
    So sind die Befehl noch schneller erreichbar 😉

Gibt es auch einen Desktop Anwendung als Client?

Ja die gibt es, diese ist aber noch nicht sehr ausgereift und befindet sich noch in der Entwicklungsphase.

Wer sie dennoch verwenden möchte kann sie bei BitBucket herunterladen:

bitbucket logo

disCoverJ – Der OpenSource Mp3 Cover Auto Tagger

Was ist disCoverJ ?

Mit Hilfe von disCoverJ kannst du mit nur wenigen Klicks deiner Musiksammlung das gewisse Etwas verleihen.

Ziehe einfach per Drag ’n‘ Drag deine Lieder in das Programm und klicke auf „Starte disCoverJ“.
Um das Einfügen der passenden Cover kümmert sich die Software.

 

Wie sucht das Programm immer die richtigen Cover ?

Um sicher zu stellen das du immer die besten Cover bekommst durchläuft disCoverJ eine Reihe von Suchmaschen.
Die Reihenfolge kannst du selber festlegen.

Aktuelle Suchmaschinen sind: iTunes, Deezer, Spotify, Google, Lokale Bilderusche.

 

Und so bekommst du es:

Installiere dir einfach Java 8 (Link)

Anschließend noch den disCoverJ Installer für dein Betriebssystem hier herunterladen.

Dann noch die disCoverJ ausführen und das war es schon.

Viel Spaß mit der Cover suche.

Mehr Infos zur Software gibts auf dieser Seite.

 

disCoverJ searching

JavaFX – Analysieren und Modifizieren einer Anwendung im Live Betrieb mit ScenicView

Hallo Leute,
ich habe vor kurzem das tolle Tool ScenicView von fxexperience.com entdeckt.

ScenicView Logo

Dieses Tool ermöglicht es deiner JavaFX Anwendung während sie läuft aktuelle Startinformationen zu entlocken und diese dann zu modifizieren.

Damit sind Eigenschaften gemeint, beispielsweise die Sichtbarkeit eines Buttons oder die aktuelle Hintergrundfarbe einer VBox.

Read More

JavaFX- Internationalisierung / i18n in FXML Dateien

Hallo zusammen,
in diesem Beitrag möchte ich euch erklären wie man i18n am Besten in JavaFX umsetzt.
Dies geht dank der Integration von i18n in SceneBuilder relativ einfach.
Alle Beispiele sind mit SceneBuilder 2.0 erstellt.

Erstellen einer Java Properties Datei

  • Erstelle eine Properies Datei: „myapp_de.properties“
  • Lege sie zum Beispiel in deinen Resources Ordner
  • Öffne die Datei in deiner IDE oder in einem Texteditor
  • Schreibe in die erste Zeile
    my.sample.key=Hallo Welt

 

Arbeiten mit i18n im JavaFX SceneBuilder

  • Öffnet / Erstellt eine .fxml Datei mit SceneBuilder
  • Klickt nun im SceneBuilder auf „Preview“ -> „Internationalization“ -> „Set Resource… “
    scene_builder_select
  • Wählt dort nun eure „myapp_de.properties“ Datei aus
  • Jetzt klickt auf ein Element welches Text enthält
  • Jetzt klickt auf der rechten Seite neben dem Text Feld auf das kleine Zahnrad.
    Dann auf „Replace with internationalized string“
    scene_builder_tokey
  • Nun wird das Textfeld automatisch in ein Key Feld umgewandelt
  • Dort kommt jetzt der Key aus der Properties Datei rein („my.sample.key“)
  • Nach verlassen des Feldes sollte der SceneBuilder automatisch den Wert aus der Properties Datei ziehen, sprich „Hallo Welt“
  • Die FXML abspeichern

 

Sprache beim Laden einer FXML Datei festlegen

  • Nun geht es im Quellcode um das Laden einer FXML mit einer bestimmten Sprache.
  • Das sieht nun folgendermaßen aus:

 ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

 URL fxmlURL = classLoader.getResource("fxmls/myview.fxml");
 InputStream inputStream = classLoader.getResource("bundles/myapp_de.properties").openStream();
 ResourceBundle bundle = new PropertyResourceBundle(inputStream);

 FXMLLoader loader = new FXMLLoader(fxmlURL, bundle);
 Parent p = loader.load();

 Stage stage = new Stage();
 stage.setScene(new Scene(p));
 stage.show();

  • Ich gehe davon von aus das die .fxml Dateien und die .properties Dateien in einem resources Ordner liegen.
    Die Struktur sieht folgendermaßen aus:

java.de.app
………..|——-Main.java

<resources>
………..|——-bundles
………………….|————–myapp_de.properties
………………….|————–myapp_en.properties
………..|——-fxmls
………………….|————–myview.fxml

 

Es ist zu beachten das die Sprache nicht währen des Betriebs geändert werden kann. Das bedeutet des die Stage neu gestartet werden muss damit eine Sprachänderung wirksam wird.

 

Download
Beispielprojekt: i18nTest.zip (3KB)

 

Java / JavaFX – Berechnung von Kollisionen zwischen zwei 2D-Objekten

Hallo Community,
wer schon mal ein kleines Spielchen entwickelt hat, ist mit Sicherheit auf das Thema Kollision getroffen.
Diese Berechnung ist nicht unbedingt einfach.

Also hier ein kleines Beispiel mit zwei FX ImageViews.
Diese können einfach durch andere Elemente ausgetauscht werden.

   private boolean checkCollision(ImageView one, ImageView two)
   {
      Bounds oneLb = one.getLayoutBounds();
      Bounds twoLb = two.getLayoutBounds();

      // Bild2 liegt rechts von Bild1
      if( (oneLb.getMinX() + oneLb.getWidth()) <= twoLb.getMinX() )
      {
         return false;
      }

      // Bild2 liegt unter den Bild1
      if( (oneLb.getMinY() + oneLb.getHeight()) <= twoLb.getMinY() )
      {
         return false;
      }

      // Bild2 liegt links von Bild1
      if( (twoLb.getMinX() + twoLb.getWidth()) <= oneLb.getMinX() )
      {
         return false;
      }

      // Bild2 liegt über den Bild3
      if( (twoLb.getMinY() + twoLb.getHeight()) <= oneLb.getMinY() )
      {
         return false;
      }

      // wenn man hier angekommen ist, dann kollidieren die BBoxen
      return true;
   }

Java / JavaFX – Laden einer .fxml Datei auf die einfache Art

Mit dem „ContextClassLoader“ lassen sich einfach Ressourcen in eine Applikation laden.
Dazu brauchen wir nur den Absoluten ClassPath bis zur Ressource-Date anzugeben.
Das ist perfekt für die .fxml Datei.

      ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

      AnchorPane page = (AnchorPane) FXMLLoader.load(classLoader.getResource("de/app/fxml/main.fxml"));
javafx

Java / JavaFX – DropShadow auf einem Steuerelement

In diesem Beispiel lege ich auf ein ImageView einen DropShadow Effekt.
Das ganze passiert über die JavaFX Klasse „DropShadow“ welche von „javafx.scene.effect.Effect“ erbt.

      ImageView imageView = new ImageView();
      DropShadow dropShadow = new DropShadow();
      dropShadow.setRadius(5.0);
      dropShadow.setOffsetX(5.0);
      dropShadow.setOffsetY(5.0);
      dropShadow.setColor(new javafx.scene.paint.Color(0, 0, 0, 0.6));
      imageView.setEffect(dropShadow);