我想要实现的是:
我正在使用FileChooser
,用户选择适当的. jpg
图像文件。然后我复制该图像,将其重命名为background.jpg
到已知文件夹,并尝试使用. setStyle(...)将其设置为应用程序的背景图像;
复制图像没有问题[我正在检查它]
出现的问题:
我有一个带有边框窗格的舞台
。边框窗格
有一个背景图像
,我使用
borderPane.setStyle("-fx-background-image:url('filepath')");
!第一次效果很好!
-
我还尝试再次使用以下命令重置相同的样式:
borderPane.setStyle("-fx-background-image:url('filepath')");
最后,当我更改文件名时,例如更改为[background-12.jpg]并使用上面的重置样式时,它会更改背景图像。
这到底是什么问题?我的意思是,我确信background.jpg已经创建,我正在检查它,而且当我一次又一次地将名称更改为其他名称时,它仍然有效。
Java CSS解析器是否懒得解析相同但有其他-fx背景图像
资源的新样式?
至于文件路径,我相信它是好的,我使用下面的代码:
//Maou is the File URL in appropriate format for CSS
String maou = file.getAbsoluteFile().toURI().toString()
//Here i add the appropriate file separator, if not JavaFX will report error
maou = maou.replaceAll("\\Q\\\\E", "//");
//Print maou
System.out.println("Maou=\n" + maou);
解决方案:
我用James_D的答案找到了最好的解决方案,经过了一点修改,它覆盖了整个窗口:
BackgroundImage bgImg = new BackgroundImage(image, BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.DEFAULT,
new BackgroundSize(window.getWidth(), window.getHeight(), true, true, true, true));
虽然我不知道到底发生了什么,但大概是JavaFX正在做的某种形式的缓存以试图“有帮助”。我稍后可能会查看源代码。
不过,老实说,通过CSS设置背景对我来说是错误的。我总是避免明确设置任何样式,例如:
borderPane.setStyle("something");
并且更喜欢添加和删除样式类:
borderPane.getStyleClass().add("foo");
borderPane.getStyleClass().remove("foo");
我认为这在你的情况下是不可能的,所以我会使用StackPane
在ImageView
上分层你的内容。
ImageView img = new ImageView(new Image(new URL("path")));
StackPane stack = new StackPane();
stack.getChildren.addAll(img, /*overlaid content*/);
与其使用内联样式,我建议直接通过background
属性设置背景:
Image img = new Image(file.getAbsoluteFile().toURI().toString());
BackgroundImage bgImg = new BackgroundImage(img,
BackgroundRepeat.NO_REPEAT,
BackgroundRepeat.NO_REPEAT,
BackgroundPosition.DEFAULT,
BackgroundSize.DEFAULT);
borderPane.setBackground(new Background(bgImg));
后台
类提供JavaAPI编程访问可以由CSS设置的所有相同属性。
我有一个带有文本块的div元素和一个父div,我在其中设置了一个背景图像。现在我想降低背景图像的不透明度。请建议我怎么做。 提前谢谢。 编辑: 我希望通过编辑 html 内容来改变我的博客文章看待 blogger.com 的方式。html 代码如下所示: 我试图用 div 元素包围上面的整个代码,并分别设置每个 div 的不透明度,如下所示: 但它不起作用。
问题内容: 我有此jquery代码,可在单击时更改背景图像: 但是,它没有改变。有什么我想念的吗? 问题答案: 您需要包括该属性的一部分。
我试图将图像作为JavaFX场景中的背景,但我的代码不起作用。 我试图在java eclipse中制作一个战舰游戏程序,但我遇到了一个图形问题。 当我第一次尝试运行它时,它工作了,一个新的窗口打开了,中间有一个按钮,但bakcground是空白的。当我尝试在窗口中设置一个图像作为背景时,按下“开始”按钮,什么也没有发生…
我正在尝试在javaFX场景中加载背景图像。我在这里找到的答案不起作用。窗口打开,但它是空白的(没有图像)。
问题内容: 如何在运行时更改CSS中的背景图片?我的体内有以下背景图像,可以在运行时更改图像吗? 问题答案: 如果已经加载了JQuery,则可以执行以下操作: 编辑 : 首先在head标签中加载JQuery: 然后,当页面上发生某些事情(例如加载完成时)时,调用Javascript更改背景图片:
我试图使用CSS设置背景图像,但原始图像被拉伸。如何保持原始图像大小,同时设置整个页面的背景? 原始图像为:原始图像 结果是:结果图像 不同的是我的网页背景比原来的要大。 任何帮助都将不胜感激!!!