# JavaFX in Java - Findet FX klasse nicht (?)



## Eirin (14. Jun 2010)

Hallo, ich bin neu hier und von daher wusste ich nicht wirklich wohin mit meinen thread, wenns wo anders besser passt, bitte verschieben ^^ ty
Also, mein ich würde gerne JavaFX teilweise in Java verwenden.
Genauer die Blendeffecte.
Hierfür habe ich folgenden code:
JavaInterface.java

```
package Atramentum;
public interface JavaInterface {
  public void make(String filename,float type,float x,float y);
  public void render(float shiftX,float shiftY);
}
```
CallFX.java

```
package Atramentum;
import javafx.reflect.FXClassType;
import javafx.reflect.FXLocal;
import javafx.reflect.FXLocal.Context;
import javafx.reflect.FXLocal.ObjectValue;

public class CallFX {
  public static JavaInterface getLightObject(String filename, float type, float x, float y) {
    Context context = FXLocal.getContext();
    FXClassType instance = context.findClass("Atramentum.LightFX");
    ObjectValue obj = (ObjectValue)instance.newInstance();
    JavaInterface ji = (JavaInterface)obj.asObject();
    ji.make(filename, type, x, y);
    return ji;
  }
}
```
und meine JavaFX klasse:
LightFX.fx

```
/*
 * LightFX.fx
 *
 * Created on 13.06.2010, 18:48:33
 */
package Atramentum;
/**
 * @author Blair
 */
import javafx.scene.*;
import javafx.scene.effect.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

public class LightFX extends JavaInterface {
  var img;
  var type;
  var displayX;
  var displayY;
  public override function make( filename:String, t:Number, x:Number, y:Number):Void {
    img = Image { url : filename};
    if(t==0){
      type = BlendMode.ADD;
    }
    else{
      type = BlendMode.COLOR_BURN;
    }
    displayX = x;
    displayY = y;
  }
  public override function render( shiftX:Number, shiftY:Number) : Void {
    Group {
      blendMode: type
      content : [
        ImageView {
          x: (displayX+shiftX) y: (displayY+shiftY)
          image : img
        },
      ]
    }
  }
}
```

In meiner LightFX.fx klasse weißt er mich darauf hin das es ein fx script in einen non-javafx project ist.
Aber das ist doch eigendlich egal, oder?

Wenn ich nun mein script starte und CallFX.getLightObject() aufruf, schmeißt er einen fehler raus:

```
Exception in thread "main" java.lang.RuntimeException: java.lang.ClassNotFoundException: Atramentum.LightFX
        at javafx.reflect.FXLocal$Context.findClass(FXLocal.java:128)
        at javafx.reflect.FXLocal$Context.findClass(FXLocal.java:107)
        at Atramentum.CallFX.getLightObject(CallFX.java:10)
```
Die dazu gehörende zeile ist also:

```
FXClassType instance = context.findClass("Atramentum.LightFX");
```

Nun meine frage: wieso findet er meine fx klasse nicht? bei java klassen klappt das doch auch.
Liegt es an irgendwelchen einstellungen von meinen project?; oder habe ich etwas am code komplett falsch gemacht?


----------



## Siassei (15. Jun 2010)

Servus,

1.) Vergleiche deinen Code mal mit
Calling JavaFX Classes from Pure Java Code

2.) Hast du die JavaFx-Bibliothek im Classpaht?

3.) Warum benutzt du nicht Swing? So gut wie alle Effekte sind auch mit Swing erzeugbar. Manchmal mit mehr Arbeit, aber möglich. Bei Swing hast du das Lizenzproblem nicht!


----------



## Eirin (15. Jun 2010)

Hi,
also ich hab das ganze jz geschafft, indem ich aus den Project ein FX project gemacht hab.
Die java klassen spielt er ja dann trotzdem ab ^^"
Mein problem jz ist jedoch, er benutzt die Blend Effecte die ich wollte nur für bilder die ich mit FX erzeugt hab.
Naja, was solls, das kann man wahscheinlich nicht lösen.
Wollte FX auf meine BufferedImages die ich in java erstellt hab anwenden.
Ich hab jedoch ersatzt gefunden, anscheinend auch ziemlich performaten.
Danke für deine antwort 
PS: ja das is die quelle.


----------



## Siassei (16. Jun 2010)

Eirin hat gesagt.:


> Wollte FX auf meine BufferedImages die ich in java erstellt hab anwenden.
> Ich hab jedoch ersatzt gefunden, anscheinend auch ziemlich performaten.


Jetzt hast du meine volle Aufmerksamkeit  Könntest du vielleicht für uns deinen Ersatz angeben bzw. erwähnen?


----------



## Eirin (16. Jun 2010)

Also ich wollte die Blend Effecte von FX nehmen und auf meine in normalen Java erstellten bilder anwenden.
Hier hab ich das her was ich nun hab:
Blend Composite Demo : Composite2D Graphics GUIJava


----------



## Siassei (16. Jun 2010)

Danke für deine Antwort.

Jetzt ist es auch für die Nachwelt festgehalten


----------

