标签: fxml

在Guice的模块配置中关联FXML和Controller

在我的Guice模块中,我想关联FXML文件和它们的控制器,目前它看起来像这样:

public class GuiceModule extends AbstractModule 
{   
    @Override
    protected void configure()
    {
        // associate controllers and fxml files
        bind(MainController.class).toInstance((MainController)loadController("/main.fxml"));
        bind(SubController.class).toInstance((SubController)loadController("/content.fxml"));
    }

    protected Object loadController(String url)
    {
        InputStream fxmlStream = null;
        try
        {
            fxmlStream = getClass().getResourceAsStream(url);
            FXMLLoader loader = new FXMLLoader();
            loader.setLocation(getClass().getResource(url));


            loader.setControllerFactory(new Callback<Class<?>, Object>() {

                public Object call(Class<?> clazz) { // clazz because class is a reserved word
                    return injector.getInstance(clazz); // PROBLEM: no access to the injector here
                }
            });

            loader.load(fxmlStream);
            return loader.getController();
        }

        // [..] exception handling

    }
}**strong …
Run Code Online (Sandbox Code Playgroud)

java dependency-injection guice javafx-2 fxml

6
推荐指数
1
解决办法
1928
查看次数

如何将CSS样式表附加到FXML?

在Oracle教程http://docs.oracle.com/javafx/2/get_started/fxml_tutorial.htm之后,我用片段创建FXML

<?xml version="1.0" encoding="UTF-8"?>

<?language javascript?>

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>

<GridPane alignment="CENTER" gridLinesVisible="true" hgap="10.0" vgap="10.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/2.2" fx:controller="fxmlexample.FXMLExampleController" styleClass="root" >
...other stuff...
<stylesheets>
    <URL value="@Login.css" />
</stylesheets>
</GridPane>
Run Code Online (Sandbox Code Playgroud)

NetBeans 8.0将URL着色为红色,并说:"类不存在:URL".

编译和运行时,JRE 1.8也会抛出异常:

...
Caused by: java.lang.RuntimeException: Exception in Application start method
    at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:894)
    at com.sun.javafx.application.LauncherImpl.access$000(LauncherImpl.java:56)
    at com.sun.javafx.application.LauncherImpl$1.run(LauncherImpl.java:158)
    at java.lang.Thread.run(Thread.java:745)
Caused by: javafx.fxml.LoadException: URL is not a valid type.
file:/C:/Users/User1/Documents/NetBeansProjects/FXMLExample/dist/run1970052180/FXMLExample.jar!/fxmlexample/fxml_example.fxml:46
Run Code Online (Sandbox Code Playgroud)

如果我在JavaFX Scene Builder 1.1中 …

css javafx fxml

6
推荐指数
1
解决办法
6977
查看次数

使用FXML/CSS更改JavaFX中Menu控件的文本颜色

我想在JavaFX中更改Menu控件的文本颜色.目前,整个菜单栏的背景颜色设置为白色,显示菜单 -s 的默认文本颜色也是白色,所以我看不到实际控件,因此我想设置菜单的文本颜色("文件" ")黑色.我怎么做?

这是FXML部分:

<?import java.lang.*?>
<?import java.net.*?>
<?import java.util.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.paint.*?>

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml">
  <children>
    <MenuBar id="modBar" layoutX="176.0" layoutY="122.0" styleClass="modBar">
      <menus>
        <Menu id="modItem" mnemonicParsing="false" styleClass="modItem" text="File" />
      </menus>
      <stylesheets>
        <URL value="test.css" />
      </stylesheets>
    </MenuBar>
  </children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)

这是CSS部分:

.modBar
{
    -fx-background-color: white;
}
.modItem
{
    -fx-color: black;
}
Run Code Online (Sandbox Code Playgroud)

这不起作用("文件"仍然是白色的).我究竟做错了什么?另外,我似乎无法将任何 CSS应用于.modItem - 它可以在 …

css menu javafx-2 fxml

5
推荐指数
1
解决办法
2万
查看次数

哪个ChoiceBox-Event可供选择?

我使用JavaFX Scene Builder将一个ChoiceBox放在一个fxml中.

FXML有一个分配给它的控制器.

我的问题是:如果我想了解更改的值,我需要注册哪个事件?

onInputMethodTextChanged="#languageSelectionModified"
Run Code Online (Sandbox Code Playgroud)

这不适用于以下代码

public void languageSelectionModified(Event event) {
    ChoiceBox<String> box = (ChoiceBox<String>) event.getSource();
    System.out.println(box.getValue());
}
Run Code Online (Sandbox Code Playgroud)

这仅适用于初始点击(即打开列表,而不是选择项目时):

onMouseClicked="#languageSelectionModified"
Run Code Online (Sandbox Code Playgroud)

虽然鼠标事件永远不会是一个很好的选择,因为触摸或键盘是输入法的情况,它仍然证明可以到达System.out.

我绝对不知道这些东西在哪里被记录(在默认的Java-API中它们不是)

java javafx javafx-2 fxml

5
推荐指数
1
解决办法
7989
查看次数

JavaFX 2.0 + FXML - 奇怪的查找行为

我想找到装有一个场景中的垂直框节点FXMLoader感谢Node#lookup(),但我得到以下异常:

java.lang.ClassCastException: com.sun.javafx.scene.control.skin.SplitPaneSkin$Content cannot be cast to javafx.scene.layout.VBox

代码 :

public class Main extends Application {  
    public static void main(String[] args) {
        Application.launch(Main.class, (java.lang.String[]) null);
    }
    @Override
    public void start(Stage stage) throws Exception {
        AnchorPane page = (AnchorPane) FXMLLoader.load(Main.class.getResource("test.fxml"));
        Scene scene = new Scene(page);
        stage.setScene(scene);
        stage.show();

        VBox myvbox = (VBox) page.lookup("#myvbox");
        myvbox.getChildren().add(new Button("Hello world !!!"));
    }
}
Run Code Online (Sandbox Code Playgroud)

fxml文件:

<AnchorPane id="AnchorPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml" >
  <children>
    <SplitPane dividerPositions="0.5" focusTraversable="true" prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" …
Run Code Online (Sandbox Code Playgroud)

java javafx-2 fxml

5
推荐指数
2
解决办法
7247
查看次数

如何将 FXML 转换为 JAVA

我在 netbeans 中使用 javafx 场景构建器创建了一个 fxml 文件。

如何将 netbeans 中的 .fxml 文件转换为 .java?有什么程序可以转换它吗?

我在 fxml 方面不是很好,所以我想使用 .java 文件来编写我的 javafx 应用程序。

请帮我。谢谢

java javafx fxml

5
推荐指数
2
解决办法
9997
查看次数

在JavaFx中重新启动应用程序

我想关闭然后重新启动已经运行的应用程序(自动),通过单击按钮或类似的东西,我想这样做是为了用其他语言重新启动应用程序,我是一般来说是JavaFx和Java的新手,请问您能为我解决这个问题吗?

java eclipse javafx javafx-2 fxml

5
推荐指数
1
解决办法
4834
查看次数

填充 FXML 中定义的选择框

我正在学习javaFX,我的问题是我有一些带有选择框和按钮的简单窗口。这个窗口是通过 FXML 定义的,它也与控制器类相关联。我想知道,如何用控制器类中的数据填充这个选择框,因为使用@FXML 引用这个选择框会抛出NullpointerEception

编辑 - 添加源代码 FXML 代码

<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="240.0"
        prefWidth="320.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1"
        fx:controller="supermarket.ManageWindowCC">
<children>
    <ChoiceBox fx:id="countChoiceBox" layoutX="44.0" layoutY="71.0" prefHeight="25.0" prefWidth="191.0"/>
    <Label layoutX="44.0" layoutY="54.0" text="To change item's count, choose one"/>
    <TextField layoutX="140.0" layoutY="129.0" prefHeight="25.0" prefWidth="24.0"/>
    <Label layoutX="123.0" layoutY="112.0" text="New count"/>
    <Button layoutX="126.1875" layoutY="171.5" mnemonicParsing="false" text="Submit"/>
</children>
Run Code Online (Sandbox Code Playgroud)

Java控制器代码:

public class ManageWindowCC {
@FXML
private ChoiceBox countChoiceBox;

public void onChangeCountClick(ActionEvent actionEvent) {

    try {
        Parent root = FXMLLoader.load(getClass().getResource("ChangeCount.fxml"));
        Stage newStage = new Stage();
        newStage.setTitle("Change …
Run Code Online (Sandbox Code Playgroud)

javafx fxml

5
推荐指数
1
解决办法
1万
查看次数

如何在FXML(JavaFX)中为按钮定义列

我知道由于jewelsea,可以在TableView中创建一个充满按钮的列.

但我想知道是否可以直接在FXML中定义它.

例如,与其他类型的一个做:

班级人员:

private final SimpleStringProperty birthDate = new SimpleStringProperty("");
Run Code Online (Sandbox Code Playgroud)

然后在FXML中:

    <TableView fx:id="table" layoutY="50.0" prefHeight="350.0" prefWidth="600.0">
      <columns>
        <TableColumn prefWidth="79.5" text="date of birth">
            <cellValueFactory>
               <PropertyValueFactory property="birthDate" />
            </cellValueFactory>
        </TableColumn>
      </columns>
    </TableView>
Run Code Online (Sandbox Code Playgroud)

并且可以添加以下元素:

@FXML private TableView<Person> table;
//...
table.getItems().add("12/02/1452");
Run Code Online (Sandbox Code Playgroud)

如何用Buttons实现同样的目标?

java javafx javafx-2 fxml javafx-8

5
推荐指数
1
解决办法
654
查看次数

JavaFX - 为什么每个Control元素下都有一行以及如何删除它?

我注意到从Control类继承的每个元素底部都有一个下划线.你可以在图片中看到它:

在此输入图像描述

当我把焦点放在任何一个项目上时,该线条就消失了.为什么会这样,我怎么能摆脱它?

码:

Main.java

package sample;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) throws Exception{
        Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root, 300, 275));
        primaryStage.show();
    }


    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

sample.fxml

<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ProgressBar?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.control.ComboBox?>
<?import java.lang.String?>
<?import javafx.collections.FXCollections?>

<GridPane stylesheets="@sample.css"
          xmlns:fx="http://javafx.com/fxml"
          alignment="center">
    <HBox>
        <ProgressBar minWidth="100" progress="0.3"/>
        <Button text="Button"/>
        <Button text="Button"/>
        <Button text="Button"/>
        <ComboBox> …
Run Code Online (Sandbox Code Playgroud)

java javafx fxml

5
推荐指数
1
解决办法
454
查看次数

标签 统计

fxml ×10

java ×7

javafx ×7

javafx-2 ×6

css ×2

dependency-injection ×1

eclipse ×1

guice ×1

javafx-8 ×1

menu ×1