标签: fxml

javafx fxml在initialize()之外为null

在这段代码中:

public class ESM extends Application {

private Stage primaryStage;

@FXML 
private ToolBar mainToolBar;


@Override
public void start(final Stage stage) throws Exception {
    try{
        this.primaryStage = stage;
        Parent root = FXMLLoader.load(getClass().getResource("/nz/co/great_ape/esm3/main_window.fxml"));

        Scene scene = new Scene(root, 800, 700);            
        //  Setup main stage to be full screen, no min or max buttons.
        //  TODO:  How will this handle multiple screens?  Apparently not well :-(
        Screen screen = Screen.getPrimary();
        Rectangle2D bounds = screen.getVisualBounds();
        primaryStage.setX(bounds.getMinX());
        primaryStage.setY(bounds.getMinY());
        primaryStage.setWidth(bounds.getWidth());
        primaryStage.setHeight(bounds.getHeight());
        primaryStage.initStyle(StageStyle.UNDECORATED); 
        primaryStage.setTitle("ESM three");
        primaryStage.setScene(scene);
        primaryStage.show(); …
Run Code Online (Sandbox Code Playgroud)

javafx fxml

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

控制器在javafx helloworld中返回null

所以我当然直接创建一个简单的例子.

public class Main extends Application {

URL bla = getClass().getResource("/sample.fxml");

@Override
public void start(Stage primaryStage) throws Exception{
    //If you get weird errors: http://zenjava.com/javafx/maven/fix-classpath.html
        //but not actually my issue. Example displays fine in intellij.

    try {

        FXMLLoader loader = new FXMLLoader(bla);
        Parent root = loader.load(bla);

        primaryStage.setTitle("Hello World");
        primaryStage.setScene(new Scene(root));
        primaryStage.show();

        Controller controller = loader.<Controller>getController() ;
        assert(controller != null);
        controller.getLabel().setText("Kaboom!");
    } catch (Exception e) {
        // Exception gets thrown if the fxml file could not be loaded
        e.printStackTrace();
    }
}

public …
Run Code Online (Sandbox Code Playgroud)

javafx-2 fxml

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

javaFX宽度的CSS没有反应?

我正在尝试使用CSS在我的JavaFX(FXML)应用程序中获取动态滚动窗格。我的CSS窗格看起来像这样:

.scroll-pane {
     -fx-width: 80%;
     -fx-height: 80%;
     -fx-background-color: #FF3333;
}
Run Code Online (Sandbox Code Playgroud)

颜色有效,但是如果我在JavaFX Scene Builder中打开CSS,则size属性不起作用,它根本不显示高度和宽度线。

我认为我缺少一些基本知识,但我似乎无法弄清楚。

css javafx scrollpane width fxml

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

在JavaFX中更改标签的文本

这个问题已在这里提出,但未能找到任何答案.我已经复制了类似的情况,我想使用控制器从另一个类更改标签的文本

FXMLDocumentController.java

public class FXMLDocumentController implements Initializable {

    @FXML
    private Label label;

    @FXML
    private void handleButtonAction(ActionEvent event) {
        System.out.println("FXMLDocumentController.#handleButtonAction");
        label.setText("Hello World!");
        Connector.Connecting();
    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }    

    public void setLabelText(String text)
    {
        System.out.println("FXMLDocumentController.setLabelText(): Called");
        label.setText(text);
    }

}
Run Code Online (Sandbox Code Playgroud)

FXMLDocument.fxml

<AnchorPane id="AnchorPane" prefHeight="200" prefWidth="320" xmlns:fx="http://javafx.com/fxml/1" fx:controller="demo5.FXMLDocumentController">
    <children>
        <Button layoutX="126" layoutY="90" text="Click Me!" onAction="#handleButtonAction" fx:id="button" />
        <Label layoutX="126" layoutY="120" minHeight="16" minWidth="69" fx:id="label" />
    </children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)

Demo5.java

public class Demo5 extends Application { …
Run Code Online (Sandbox Code Playgroud)

javafx fxml javafx-8 fxmlloader

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

如何在使用FXML设计的JavaFX中创建内部弹出窗口

我有一个FXML文件,我用它来允许用户输入请求.现在我只是把它放在一个新的阶段并且做到了Stage.show().我不希望它出现在一个新窗口中,表现得更像一个ContextMenu.

看看ContextMenu课程,似乎我不能根据FXML文件设置内容.有没有办法用ContextMenu或者Popup或其他一些我不知道的类来做到这一点?

javafx javafx-2 fxml javafx-8

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

如何检查JavaFX的TabPane中是否已打开选项卡

我通过单击按钮从fxml文件动态添加选项卡。有没有一种方法可以查看JavaFX的TabPane中是否已打开该选项卡,然后切换到该选项卡,而不是将相同的选项卡添加到TabPane。

这是我的控制器类:

    package application;

import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Tab;
import javafx.scene.control.TabPane;
import javafx.scene.layout.AnchorPane;

public class MainController implements Initializable{

    @FXML
    public TabPane myTabPane ;
    public AnchorPane myAnchorPane;

    @FXML
    public Button btnTab1 = new Button();
    @FXML
    public Button btnTab2 = new Button();
    @FXML
    public Button btnTab3 = new Button();

    @Override
    public void initialize(URL location, ResourceBundle resources) {

        btnTab1.setOnAction(e -> {
            //System.out.println("Clicked");            
            try {
                Tab myNewTab = FXMLLoader.load(this.getClass().getResource("MyTestTab.fxml")); …
Run Code Online (Sandbox Code Playgroud)

java javafx tabpanel fxml

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

JavaFX加载FXML的性能问题

我有一个主文件有切换按钮,单击其中一个按钮我启动一个新的FXMLLoader,有大约10个SVG,15个Textfield和6个微调器.此外,它有CSS来相应地渲染节点...它加载正常,没有错误或任何问题,但在显示场景之前需要一两秒钟.

我想这是由于节点数量同时被初始化.有没有办法在节点开始初始化之前显示场景?

注意:我的项目要求我在点击时导航到不同的场景.

从中选择ToggleButton

   if(settings.isSelected()){
        Stage stage = (Stage) mainWrapper.getScene().getWindow();
        Parent root = FXMLLoader.load(getClass().getResource("/fxmlFiles/settings.fxml"));
        stage.setScene(new Scene(root, Screen.getPrimary().getVisualBounds().getWidth(),
                Screen.getPrimary().getVisualBounds().getHeight()));
        stage.centerOnScreen();
        //stage.setMaximized(true);
        stage.show();
    }
Run Code Online (Sandbox Code Playgroud)

fxmlFile

    <FlowPane xmlns:fx="http://javafx.com/fxml"
    fx:controller="controllers.motelInfoController"
    stylesheets="/cssFiles/motelInfo.css"
    fx:id="content">

    <VBox fx:id="mainWrapper">
    <VBox fx:id="validationWrapper">
        <Label fx:id="validationLabel" visible="false"/>
    </VBox>
    <VBox fx:id="generalInfo">
    <HBox> <!--First Row-->
            <HBox>
            <Group>
                <SVGPath fx:id="iconMotelName" scaleX="0.05" scaleY="0.05" fill="white"/>
            </Group>
            <Group>
                <TextField fx:id="miName" promptText="Motel Name"/>
            </Group>
            </HBox>
            <HBox>
                <Group>
                    <TextField fx:id="miFranchiseName" promptText="Franchise Name"/>
                </Group>
            </HBox>
        </HBox>
    <HBox> <!--Second Row-->
            <HBox>
                <Group>
                    <SVGPath fx:id="iconMotelAddress" scaleX="0.05" scaleY="0.05" fill="white"/>
                </Group>
                <Group>
                    <TextField …
Run Code Online (Sandbox Code Playgroud)

fxml javafx-8

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

如何使用fxml触发javafx中文本域焦点的事件?

我在相关fxml的控制器类中有这个功能.我需要在文本字段的焦点上触发此函数,但场景构建器没有类似于onfocusout的事件.如何使用控件类实现这一点?

@FXML
private void ValidateBikeNo(){
    Tooltip error = new Tooltip("This bike no exists");
    BikeNoIn.setTooltip(error);
}
Run Code Online (Sandbox Code Playgroud)

java javafx fxml scenebuilder

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

JavaFX将控制器变量绑定到组件属性

说我有一个控制器

@FXML private ObservableList<String> myStrings = FXCollections.observableArrayList();
Run Code Online (Sandbox Code Playgroud)

是否可以编写任何FXML,它将ListView myStrings与其项目连接起来?

我的第一次尝试是:

<ListView>
    <items fx:id="myStrings"/>
</ListView>
Run Code Online (Sandbox Code Playgroud)

但是这种抱怨fx:id在那个位置上是无效的.我也试过了

<ListView items="${controller.myStrings}"/>
Run Code Online (Sandbox Code Playgroud)

......但它无法解决这个问题.

请不要发布此解决方案:

<ListView fx:id="myStringsListView"/>

// In controller
@FXML private ListView<String> myStringsListView;
@FXML public void initialize() {
    myStringsListView.setItems(myStrings);
}
Run Code Online (Sandbox Code Playgroud)

这就是我现在正在做的事情,但是间接和样板的数量在这里伤害了我.

java data-binding javafx javafx-2 fxml

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

激活事件后,能否在Action Event方法中获取javafxml对象的ID?

我正在尝试编写一个小的rpg,我决定将基础知识放入fxml文档(带有其项目的MenuBar)中。因此,现在我计划在单击菜单项(字符,库存和设备)时打开一个新窗口,这样我可以显示一个额外的窗口。因此,我想将每个菜单的标题设置为与MenuItem上显示的Text等效。当然,我可以为每个菜单项添加一个额外的方法,但是我正在寻找一种可能性,可以在该菜单项中触发事件的菜单项的ID,因此可以使用其getText方法来获取标记。有人可以帮我吗?

我尝试使用“ this”访问对象,并且还考虑过使用枚举将ID连接到枚举MenuName的对象,因此我只需要在方法中放入一个开关,从而创建菜单,但这也没有实现。不能解决,因为在那里我无法检查哪个ID被解雇了。因此,对于我的程序的那部分,它没有帮助。

这是我的控制器类中的代码

public class Controller {
    @FXML
    private void menuIsClickedDefault(ActionEvent event) throws Exception {
          Stage secondStage = new Stage();
          Parent a = FXMLLoader.load(getClass().getResource("menus.fxml"));
          secondStage.setTitle(HERES_MY_PROBLEM);
          secondStage.setScene(new Scene(a, 646, 400));
          secondStage.initModality(Modality.APPLICATION_MODAL);
          secondStage.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

这些是我的fxml对象:

<MenuItem fx:id="stats" mnemonicParsing="false" text="Statistics" />
<MenuItem fx:id="inv" mnemonicParsing="false" text="Inventory" />
<MenuItem fx:id="equip" mnemonicParsing="false" text="Equipment" />
Run Code Online (Sandbox Code Playgroud)

我还没有将方法集成到对象中,因为如果不解决问题就没有意义,并且我知道其余代码也可以工作,原因是设置方法类似。

javafx fxml scenebuilder

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