我想将css文件链接到我的应用程序。在我的fxml文件中,我使用以下命令:
<stylesheets>
<URL value="@../stylesheet1.css" />
</stylesheets>
...当我在scenebuilder中打开fhtml" target="_blank">xml文件时,我可以看到一个样式化的预览。但是,当我尝试运行应用程序时,出现了一个错误:
java.net.MalformedURL异常:无协议:.../stylesheet1.css
所以我用这种方法测试它:
<stylesheets>
<String fx:value="stylesheet1.css" />
</stylesheets>
现在它是反过来的-应用程序启动并应用css,但我没有看到场景构建器中的预览。错误消息:
"文件stylesheet1.css不存在。资源stylesheet1.css找不到”。
那么如何正确附加css文件呢?
嗯,虽然我的问题没有得到回答,为什么它不能以上述方式工作,但我找到了一个适合我的解决方案。在我的FXML中,我只有一行
<?scenebuilder-stylesheet ../stylesheet1.css?>
所以SceneBuilder与css一起工作。在我的主类中,我以编程方式设置样式表:
Scene scene = new Scene(root);
String css = this.getClass().getResource("../stylesheet1.css").toExternalForm();
scene.getStylesheets().add(css);
如果您不想以编程方式进行,可以通过分离代码和资源来实现。我有一个像这样的Maven项目结构,但这不是一个要求。
src/main/java/${packageName}
MainWindow.fxml
src/main/resources/${packageName}
stylesheet1.css
现在,您可以在. fxml
中使用样式表。
stylesheets="@stylesheet1.css"
或者像您一样使用样式表标记。
SceneBuilder
中可能有警告,但它可以工作。
这里有一个在开发环境、场景生成器和打包的JAR中工作的解决方案。
文件夹结构:
主要的爪哇:
package application;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
FXMLLoader loader = new FXMLLoader(Main.class.getResource("view/RootLayout.fxml"));
AnchorPane rootLayout = (AnchorPane) loader.load();
Scene scene = new Scene(rootLayout, 400, 400);
scene.getStylesheets().add(getClass().getResource("css/application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
launch(args);
}
}
RootLayout.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.view.RootLayoutController">
<children>
<Pane layoutX="0.0" layoutY="0.0" prefHeight="200.0" prefWidth="200.0">
<children>
<Button fx:id="sunButton" layoutX="74.0" layoutY="88.0" mnemonicParsing="false" onAction="#handleSunButtonClick" styleClass="sun-button" stylesheets="@../css/toolbar.css" text="Button" />
</children>
</Pane>
</children>
</AnchorPane>
RootLayoutController。爪哇:
package application.view;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class RootLayoutController {
@FXML
Button sunButton;
@FXML
public void handleSunButtonClick() {
System.out.println( "Button clicked");
}
}
工具栏。css:
.sun-button {
-fx-graphic: url('./icons/sun.png');
}
application.css:
.root {
-fx-background-color:lightgray;
}
太阳巴布亚新几内亚:
这在开发环境和打包JAR(在Eclipse中选择“将所需库提取到生成的JAR中”)时都有效。
屏幕截图(只是一个按钮,带有通过css加载的图标)
我发现在fxml中包含css
文件的可用和工作解决方案是将样式表="@app/cssfilename.css"
添加到fxml
文件的父节点,就像堆栈窗格一样
<StackPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="app.fxml.SettingsController" stylesheets="@app/cssfilepath.css">
......
.....
.....
</StackPane>
在Oracle教程http://docs.Oracle.com/javafx/2/get_started/fxml_tutorial.htm之后,我使用一个片段创建了FXML NetBeans 8.0将URL涂成红色,并表示:“class dostnot exist:URL”。 似乎每个人都在使用元素,为什么我不能呢?
我已将这些字体样式添加到我的页面 如何使用css将它们添加到我的页面中,以便我的css中没有这些外部链接 我试过这个 但在我的控制台(我使用Mlozilla)中 可下载字体:被消毒剂拒绝 在Chrome错误说: 无法解码下载的字体:https://fonts.googleapis.com/css?family=Roboto:400,700700Italic,400italic 然后我下载了与Rob
我有一个,我想为它设置。 我知道我可以用div包装它,并控制该div的子级的CSS,但如果可能的话,我希望避免多余的包装。 PrimeFaces版本:3.5。
问题内容: 我想知道,如果它是一个可以添加在我的风格或任何其他方式来增加边界? 喜欢 : 的CSS HTML 问题答案: 边框可以沿剪切路径应用于剪切后的元素吗? 不,向剪贴元素添加属性不会沿剪贴路径应用边框,因为会在应用于之前在原始矩形(或正方形)容器上应用,因此也会被剪切掉。您可以在下面的代码段中看到它: 有没有其他方法可以创建这样的边框效果? 我们可以通过将其应用于容器元素来模仿它。容器元素
问题内容: 我正在使用 jQuery* 更改 CSS ,并希望根据输入值删除要添加的样式: * 我怎样才能做到这一点? 请注意,只要使用颜色选择器选择了颜色(即,当鼠标移至色轮上时),以上行就会运行。 第二注:我不能这样做,因为它将从 CSS* 文件中删除默认样式。 我只想删除 jQuery添加的内联样式。 * 问题答案: 将属性更改为空字符串似乎可以完成此工作:
问题内容: 我使用PHP显示来自MySQL的数据。这是我的css语句: 它们用于显示表,表头,表日期。我是php CSS的新手,所以我只是想知道如何在php中使用上述CSS样式显示代码: 问题答案: 级联样式表(CSS)是一种样式表语言,用于描述以标记语言编写的文档的表示语义(外观和格式)。 : CSS不是一种编程语言,并且没有服务器端语言(如PHP)随附的工具。但是,我们可以使用服务器端语言来生