je dois montrer mon contenu WebView sur motif de fond parent. Y a-t-il un moyen simple de le faire?Arrière-plan transparent dans le WebView dans JavaFX
Répondre
Vous pouvez Chroma Key votre WebView sur votre contenu en utilisant Blend effets.
Mise à jour
J'ai essayé ceci et mettre en œuvre une véritable clé chroma avec les effets Blend intégrés de JavaFX 2.2 dans JavaFX est en fait assez difficile (et dépassé mes capacités de mise en œuvre). J'ai réussi à faire fonctionner la technique avec des formats vidéo flv pré-chroma keyed, mais pas avec des nœuds arbitraires tels que WebView.
encore, pour l'instant, vous pouvez obtenir quelque chose assez similaire d'une manière simple en utilisant l'assombrir et d'alléger les effets comme le suggère martini dans sa réponse. Ce n'est pas parfait, mais devra probablement suffire jusqu'à RT-25004 est mis en œuvre ou la plate-forme JavaFX fournit un ensemble plus complet d'opérations alpha compositing.
Si u ont un arrière-plan lumineux utiliser
webView.setBlendMode(BlendMode.DARKEN);
et quand fond sombre, puis
webView.setBlendMode(BlendMode.LIGHTEN);
Ce sera probablement fixé dans un certain temps, cette fonction est demandé sur le bug JavaFX Tracker #RT-25004
Je ressuscite parce que je trouve une meilleure solution pour le problème d'avoir un WebView
sur une gradien t. Supposons que vous ayez un gradient like this et que vous voulez afficher une chaîne HTML dessus en couleur blanche qui ressemble à ceci:
<p>Integer semper, est imperdiet mattis porttitor, massa vulputate ipsum</p>
L'astuce est de convertir votre dégradé en chaîne base64:
iVBORw0KGgoAAAANSUhEUgAAAAEAAAHDCAYAAADlQnCCAAAAq0lEQVRIib2VwRWAMAhDaSdwCtd1No8uUzzp0ydBgjwvnmhCPrTKtKxbb73NXcaQLiL5j/olyhQH5JXu4H4sUGyWHAIa9VWjU9qtyAh6JGicIMJno2HcGSX3gJsCKH5EfUfHJUed+qFzekrpuVzM/oq4uFKGr/pI4B7wiP2Vgno0F/uCUQ9ZXWg4vM/JL1Hpt10Nt+hZjhCDKepxV8H3soZGWOqHP3ZSGYDdATTkg3iGU3JnAAAAAElFTkSuQmCC
Puisque WebView
charge n'importe quelle chaîne HTML, cela peut impliquer <body>
qui a un arrière-plan. Dans mon exemple, le WebView
n'occupait pas tout l'espace avec le dégradé, donc je devais positionner l'arrière-plan aussi. Voici le code HTML j'ai ajouté à la chaîne HTML ci-dessus à l'beggining:
<html>
<head>
</head>
<body style="margin: 0px; padding: 0px; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAHDCAYAAADlQnCCAAAAq0lEQVRIib2VwRWAMAhDaSdwCtd1No8uUzzp0ydBgjwvnmhCPrTKtKxbb73NXcaQLiL5j/olyhQH5JXu4H4sUGyWHAIa9VWjU9qtyAh6JGicIMJno2HcGSX3gJsCKH5EfUfHJUed+qFzekrpuVzM/oq4uFKGr/pI4B7wiP2Vgno0F/uCUQ9ZXWg4vM/JL1Hpt10Nt+hZjhCDKepxV8H3soZGWOqHP3ZSGYDdATTkg3iGU3JnAAAAAElFTkSuQmCC); background-repeat: repeat-x; background-position: 0 -152px;">
<span style="font-family: Arial; font-size: 12px; color: white; display: block; margin:0px;">
Et à la fin:
</span></body></html>
donc la production de ce code:
String desc = "<html><head></head><body style=\"margin: 0px; padding: 0px; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAHDCAYAAADlQnCCAAAAq0lEQVRIib2VwRWAMAhDaSdwCtd1No8uUzzp0ydBgjwvnmhCPrTKtKxbb73NXcaQLiL5j/olyhQH5JXu4H4sUGyWHAIa9VWjU9qtyAh6JGicIMJno2HcGSX3gJsCKH5EfUfHJUed+qFzekrpuVzM/oq4uFKGr/pI4B7wiP2Vgno0F/uCUQ9ZXWg4vM/JL1Hpt10Nt+hZjhCDKepxV8H3soZGWOqHP3ZSGYDdATTkg3iGU3JnAAAAAElFTkSuQmCC); background-repeat: repeat-x; background-position: 0 -152px;\"><span style=\"font-family: Arial; font-size: 12px; color: white; display: block; margin:0px;\">" + description + "</span></body></html>";
wv_desc.getEngine().loadContent(desc);
Vous pourriez probablement mettre les styles dans le <head>
ou les charger d'une autre manière pour plus de clarté, je suppose, mais cela est un bien meilleur travail autour de tout ce que je trouve sur le net pour cette question.
Webview transparent je reçois une bonne solution ici: https://javafx-jira.kenai.com/browse/RT-29186 lire les commentaires Harry Hur
import java.lang.reflect.Field;
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
import org.w3c.dom.Document; `
public class TestTranparentApps extends Application {
@Override
public void start(Stage primaryStage) {
new WebPage(primaryStage);
primaryStage.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}
class WebPage{
WebView webview;
WebEngine webengine;
public WebPage(Stage mainstage){
webview = new WebView();
webengine = webview.getEngine();
Scene scene = new Scene(webview);
scene.setFill(null);
mainstage.setScene(scene);
mainstage.initStyle(StageStyle.TRANSPARENT);
mainstage.setWidth(700);
mainstage.setHeight(100);
webengine.documentProperty().addListener(new DocListener());
webengine.loadContent("<body style='background : rgba(0,0,0,0);font-size: 70px;text-align:center;'>Test Transparent</body>");
}
class DocListener implements ChangeListener<Document>{
@Override
public void changed(ObservableValue<? extends Document> observable, Document oldValue, Document newValue) {
try {
// Use reflection to retrieve the WebEngine's private 'page' field.
Field f = webengine.getClass().getDeclaredField("page");
f.setAccessible(true);
com.sun.webkit.WebPage page = (com.sun.webkit.WebPage) f.get(webengine);
page.setBackgroundColor((new java.awt.Color(0, 0, 0, 0)).getRGB());
} catch (Exception e) {
}
}
}
}
}
C'est trop cool! –
'WebEngine.page' est final, vous pouvez donc exécuter la réflexion sans avoir besoin d'écouter les changements de document dès la création de webView. Bien que ma version (JDK 1.7.80) utilise 'com.sun.webpane.platform', mais c'est probablement la même chose. – TWiStErRob
Cela peut être utile
final com.sun.webkit.WebPage webPage = com.sun.javafx.webkit.Accessor.getPageFor(engine);
webPage.setBackgroundColor(0);
parfait. Pour rendre WebView transparent, il suffit de dépasser deux lignes de code. ou vous pouvez en faire un doublure 'com.sun.javafx.webkit.Accessor.getPageFor (webviewgetEngine()). setBackgroundColor (0)' – Vishrant
- 1. Supprimer le ScrollBar dans le WebView Javafx
- 2. Modifier menu contextuel dans JavaFX WebView
- 3. Débogage html/Javascript dans JavaFX WebView
- 4. Monodroid Transparent WebView
- 5. JavaFx WebView cache
- 6. webview fond transparent
- 7. Impression d'un WebView JavaFX
- 8. Comment activer le stockage local HTML5 dans javafx WebView
- 9. JavaFX WebView - Ouvrir le menu contextuel Javascript
- 10. javafx WebView setMember() avant le script
- 11. montrant webview avec fond transparent
- 12. Webview JavaFX s'exécutant avec le processus
- 13. Fond transparent + Flash dans WebView sur Android 3.0+?
- 14. javafx webview charger les fichiers css locaux
- 15. Javafx webview données de réponse http
- 16. obtenir le contenu de la webview en utilisant javafx
- 17. JavaFX show Source HTML pour le contrôle WebView
- 18. Cordova Embedding Webview transparent sur l'application native
- 19. iOS: WebView Couleur d'arrière-plan à transparent
- 20. JavaFX WebView ne charge pas le script de dossier supérieur dans le fichier jar
- 21. Utilitaire de combinaison JavaFX et style de scène transparent
- 22. Alignement dans le bouton (javafx)
- 23. NullPointerException dans le contrôleur JavaFX
- 24. webview dans android
- 25. Existe-t-il un moyen de lire le flash dans javafx WebView?
- 26. Valeur dans le curseur dans JavaFX
- 27. Utilisation de showAndWait dans l'application JavaFX
- 28. Transparent PNG n'est pas transparent dans LWJGL
- 29. Comment puis-je afficher une page Web javascript dans un WebView dans JavaFx 2.0 dans le navigateur
- 30. Parcourir le fichier HTML du client local dans WebView
Il me travaille à 8 avec JDK (1.8.0_40-ea), mais ce n'est pas le cas avec JDK 7 (1.7.0_65) –