salut,
je voudrais savoir comment créer une boîte de dialogue javafx à partir d'un code java; le cas échéant où trouver cette info.
merci,
olivier
salut,
je voudrais savoir comment créer une boîte de dialogue javafx à partir d'un code java; le cas échéant où trouver cette info.
merci,
olivier
Regardes du côté de JFXtras, c'est un bon complément à l'API est est un peu jeune
Tu devrais y trouver ton bonheur![]()
A noter que :
- JFXtras 0.6 est compatible JavaFX 1.2
- JFXtras 0.7 beta et beta 2 sont compatibles JavaFX 1.3. Les XDialog ne sont pas modaux (bloquant) dans cette beta version mais devraient a nouveau l'etre dans la version finale (un probleme similaire existait durant la beta de la 0.6).
Un XDialog ca marche comme une scene a ceci pres qu'il a un Stage parent et qu'il peut etre modal.
Quand il est bloquant (voir plus haut concernant la 0.7), et qu'on a ce genre d'appel :
l'appel a // Autre chose n'a lieu que lorsque le dialogue est referme.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 XDialog { modal: true } // Autre chose.
salut,
en fait j'ai copié le code qui lance la fenêtre principale, et j'ai ainsi lancé un deuxième "desktop design file", comme cela :
j'éspère que j'ai réussi à me faire comprendre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function buttonAction(): Void { var design = newdesktop {}; javafx.stage.Stage { title: "newdesktop" scene: design.getDesignScene() } }
mais je suis face à un autre problème : comment passer une variable à partir de la fenêtre principale vers la fenêtre secondaire, et aussi dans l'autre sens?
merci pour toute réponse,
olivier
En gardant un référence sur celle ci , un peu comme avec n'importe quel objet.
salut,
pourrais-tu donner un exemple de code, avec 2 fenêtres et une variable dont la 2e fenêtre change la valeur, valeur qui est lue lors du retour dans la 1e fenêtre, stp?
olivier
Pour faire simple :
Après tu peux aussi rajouter des variables dans ton design en les codant manuellement (puisque le composer ne prend en charge que la partie GUI).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 function buttonAction(): Void { var design = newdesktop {}; design.textField.text = myVar javafx.stage.Stage { title: "newdesktop" scene: design.getDesignScene() onClose: function():Void { myVar = design.textField.text; } } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public newdesktop { [...] public-init var myVarInDesign:String on replace { textField.text = myVarInDesign; } /** * Bindé en tant qu'action du bouton OK. */ public var onOK:function():Void; } [...] function buttonAction(): Void { var design = newdesktop { myVarInDesign: myVar onOK: function():Void { myOkButton.scene.stage.close(); myVar = textField.text } }; javafx.stage.Stage { title: "newdesktop" scene: design.getDesignScene() } }
merci, il faut maintenant que je fasse quelques tests.
olivier
j'ai un peu reporté les tests, car je m'occupe actuellement d'intégrer javafx dans java:
à tout hasard, savez-vous si il est possible d'appeler une "fenêtre" javafx à partir d'une classe java traditionnelle (en l'occurence, à partir d'un client JEE)?
si oui, pouvez-vous me donner un exemple?
olivier
Oui avec des interfaces pas de soucis, par contre il faut ajouter les librairies javafx au classpath de JEE. J'avais esseayé avec osgi donc ca doit marcher sur les conteneurs JEE basé dessus tel que GFV3 et ceux de Spring.
merci, je vais essayer de suite.
je te tiens au courant de mes succès ou échecs!
olivier
du nouveau : j'ai réussi à importer les librairies de javafx, et j'ai créé un nouveau "stage" dans mon projet client.
mais comment l'appeler à partir du code java?
je cherche de mon côté.
voici le code javafx:
olivier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Stage { title: "Application title" scene: Scene { width: 250 height: 80 content: [ Text { font : Font { size : 16 } x: 10 y: 30 content: "Application content" } ] } }
... et voici le code java:
j'ai remanié le code javafx:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package enterpriseapplication4; /** * * @author oliviersaint-eve */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { System.err.println("hello"); } }
ça serait sympa de m'aider!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 package enterpriseapplication4; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.text.Text; import javafx.scene.text.Font; /** * @author oliviersaint-eve */ public class Main2 { def stage: Stage = Stage { title: "Application title" scene: Scene { width: 250 height: 80 content: [ Text { font: Font { size: 16 } x: 10 y: 30 content: "Application content" } ] } } public function show(){ stage.visible=true; } }
voici qui fait avancer le schmilblick : http://java.dzone.com/news/calling-javafx-from-java.
avec ce code :
j'obtiens cette erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 package test_java_javafx; import java.io.InputStreamReader; import java.util.logging.Level; import java.util.logging.Logger; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; import javax.script.ScriptException; import javax.swing.SwingUtilities; /** * * @author oliviersaint-eve */ public class Main { /** * @param args the command line arguments */ public static void main(String[] args) { System.err.println("hello"); try { ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByExtension("fx"); InputStreamReader reader = new InputStreamReader(Main.class.getResourceAsStream("NewJavaFXStage.fx")); engine.eval(reader); } catch (ScriptException ex) { } //ScriptEngineManager manager = new ScriptEngineManager(); // final ScriptEngine engine = manager.getEngineByExtension("fx"); // final InputStreamReader reader = new InputStreamReader(Main.class.getResourceAsStream("NewJavaFXStage.fx")); } } }
avec ce fichier javafx:Exception in thread "main" java.lang.NoSuchMethodError: com.sun.javafx.runtime.Entry.entryMethodName()Ljava/lang/String;
at com.sun.tools.javafx.comp.JavafxDefs.<clinit>(JavafxDefs.java:169)
at com.sun.tools.javafx.script.JavaFXScriptCompiler.initCompilerContext(JavaFXScriptCompiler.java:103)
at com.sun.tools.javafx.script.JavaFXScriptCompiler.compile(JavaFXScriptCompiler.java:166)
at com.sun.tools.javafx.script.JavaFXScriptEngineImpl.parse(JavaFXScriptEngineImpl.java:255)
at com.sun.tools.javafx.script.JavaFXScriptEngineImpl.eval(JavaFXScriptEngineImpl.java:178)
at com.sun.tools.javafx.script.JavaFXScriptEngineImpl.eval(JavaFXScriptEngineImpl.java:169)
at com.sun.tools.javafx.script.JavaFXScriptEngineImpl.eval(JavaFXScriptEngineImpl.java:174)
at javax.script.AbstractScriptEngine.eval(AbstractScriptEngine.java:232)
at test_java_javafx.Main.main(Main.java:31)
Java Result: 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 package enterpriseapplication4; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.text.Text; import javafx.scene.text.Font; /** * @author oliviersaint-eve */ Stage { title: "Application title" scene: Scene { width: 250 height: 80 content: [ Text { font: Font { size: 16 } x: 10 y: 30 content: "Application content" } ] } }
on dirait que il manque une librairie javafx, pourtant j'ai inclus tous les jars du répertoire lib du SDK javafx.
Voir Creating JavaFX Classes from Java Classes then running? et
Loading JavaFX code from string
Je viens de ré-essayer avec JavaFX 1.3, en lançant des scripts avec la ligne de commande :
(j'ai JAVAFX_HOME défini dans mes variables d'environnement), j'ai un petit programme de test qui fonctionne (dessiner avec la souris) mais pas un autre (une animation simple) : le runtime ne trouve pas com.sun.javafx.animation.AnimationProviderImpl et moi non plus (ni avec jarbrowser ni avec Depends pour les DLL).
Code : Sélectionner tout - Visualiser dans une fenêtre à part java -Xbootclasspath/p:%JAVAFX_HOME%/lib/shared/javafxc.jar -Djava.ext.dirs=%JAVAFX_HOME%/lib/shared;%JAVAFX_HOME%/lib/desktop -cp %JAVAFX_HOME%/lib/shared/javafxc.jar;. RunJavaFXScript Test2.fx
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager