import javafx.application.Application;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Group;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
public class Main extends Application {
@FXML public VBox VBOX;
@Override
public void start(Stage primaryStage) throws Exception{
Parent main = FXMLLoader.load(getClass().getResource("launcher.fxml"));
primaryStage.setTitle("Dev Launcher");
primaryStage.setWidth(900);
primaryStage.setHeight(560);
Scene scene = new Scene(new Group());
VBOX = new VBox();
final WebView browser = new WebView();
final WebEngine webEngine = browser.getEngine();
webEngine.load("http://google.com");
VBOX.getChildren().addAll(browser);
scene.setRoot(main);
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.*?>
<?import javafx.scene.effect.*?>
<?import javafx.scene.text.*?>
<?import javafx.scene.web.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefWidth="900.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<bottom>
<ToolBar prefHeight="40.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<items>
<GridPane alignment="CENTER" prefHeight="57.0" prefWidth="883.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="375.2518005371094" minWidth="10.0" prefWidth="154.2821502685547" />
<ColumnConstraints halignment="CENTER" hgrow="ALWAYS" maxWidth="550.5108489990234" minWidth="0.0" prefWidth="481.0280303955078" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="173.30714416503906" minWidth="10.0" prefWidth="154.2821502685547" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Button mnemonicParsing="false" prefHeight="57.0" prefWidth="286.0" text="Play" GridPane.columnIndex="1" GridPane.halignment="CENTER">
<font>
<Font name="System Bold" size="13.0" />
</font>
</Button>
<Button mnemonicParsing="false" prefHeight="30.0" prefWidth="85.0" text="Website" GridPane.halignment="RIGHT" GridPane.valignment="CENTER" />
<Button mnemonicParsing="false" prefHeight="30.0" prefWidth="85.0" text="About" GridPane.valignment="CENTER" />
<Label text="Version: " GridPane.columnIndex="2" GridPane.halignment="LEFT" GridPane.hgrow="SOMETIMES" GridPane.valignment="CENTER" GridPane.vgrow="SOMETIMES" />
<Label prefWidth="120.0" text="0.0.1" GridPane.columnIndex="2" GridPane.halignment="RIGHT" GridPane.valignment="CENTER" GridPane.vgrow="SOMETIMES">
<GridPane.margin>
<Insets left="-100.0" />
</GridPane.margin>
</Label>
</children>
</GridPane>
</items>
</ToolBar>
</bottom>
<center>
<TabPane nodeOrientation="LEFT_TO_RIGHT" prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab text="Update Notes">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<ScrollPane layoutX="1.0" AnchorPane.bottomAnchor="10.0" AnchorPane.leftAnchor="10.0" AnchorPane.rightAnchor="10.0" AnchorPane.topAnchor="10.0">
<content>
<AnchorPane prefHeight="450.0" prefWidth="862.0">
<children>
<VBox fx:id="VBOX" alignment="CENTER" prefHeight="200.0" prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
</content>
</ScrollPane>
</children>
</AnchorPane>
</content>
</Tab>
<Tab text="Game Log">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0" />
</content>
</Tab>
</tabs>
</TabPane>
</center>
</BorderPane>
对于Controller类,我没有太多内容:
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import java.io.IOException;
public class Controller {
@FXML private VBox VBOX;
}
您的应用程序需要做的只是维护应用程序生命周期(例如,启动应用程序,执行start方法,将初始场景加载到stage,显示stage,根据需要停止应用程序)。这对它来说已经足够了,其他逻辑可以委托给程序中的其他类(如控制器)。控制器是由FXMLLoader创建的,并且FXMLLoader足够聪明,可以为场景图创建底层节点,并自动将其连接到控制器中,这一事实使得这种委派变得轻松。
因此,您不需要(也不应该)将标记为@fxml
的对象设置为新值。例如,声明:@fxml public VBox VBox;
,然后稍后调用:VBox=new VBox();
是错误的。
您也不应该在应用程序中设置@fxml
字段,因为这没有任何意义。@fxml
仅在控制器中才有意义。应用程序通常不是(也不应该是)控制器。如果是这样,就会引起问题,因为通常情况下,当您加载新的FXML时,FXMLLoader会创建一个新的控制器。在应用程序中有多个应用程序实例是没有意义的,一个是由java launcher创建的,另一个是由FXMLLoader创建的(这只会极大地混淆您)。有关这方面的更多信息,请参见JavaFX控制器类not working。
记住这一点,您的代码可以按照如下所示进行重构。
取样.主要
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.*;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent main = FXMLLoader.load(getClass().getResource("launcher.fxml"));
primaryStage.setTitle("Dev Launcher");
primaryStage.setWidth(900);
primaryStage.setHeight(560);
Scene scene = new Scene(main);
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
采样控制器
package sample;
import javafx.fxml.FXML;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
public class Controller {
@FXML private VBox vbox;
public void initialize() {
final WebView browser = new WebView();
final WebEngine webEngine = browser.getEngine();
webEngine.load("http://google.com");
vbox.getChildren().addAll(browser);
}
}
对于这样一个简单的问题,我感到很抱歉,但我发现很难相信在使用JavaFX SceneBuilder开发用户界面的同时,我实际上无法查看fxml。 null 即http://www.webhostingplanguide.com/wp-content/uploads/2013/12/coffeecup-html-editor.jpg 如上所述,我希望能够在FXML或所见即所得的前端工作。
网格查看让你在表中查看、更新、插入或删除数据。网格的弹出菜单提供了以下额外功能:设置字段值为 Null 或空白字符串、使用当前字段值作为一个筛选、格式化网格查看、及以更多。 使用导览栏 表查看器 提供了一个便捷的方式来浏览记录或页使用 记录或页导览栏 按钮。全部按钮用于浏览左和右到前一或下一条记录或页。 记录导览栏 按钮 描述 新建记录:输入一个新记录。在任何时候当你在表网格查看中工作,点击这个按
问题内容: 如何通过urllib获取标头的代码? 问题答案: getcode()方法(在python2.6中添加)返回与响应一起发送的HTTP状态代码;如果URL不是HTTP URL,则返回None。
问题内容: 如何查看我使用的NumPy版本? (仅供参考,此问题已被编辑,因为问题和答案都不是特定于平台的。) 问题答案:
我似乎不知道如何使用PDFBox及其PDFPagePanel组件查看PDF页面。 因此,使用PDFBox,我的选项似乎是创建PDPage对象或PDDocument对象的列表,我使用了PDPage列表(而不是对PDDocument对象使用) 下面的代码创建一个名为testPage的PDPage对象 在这里,我想创建一个并使用它的方法将PDPage放入组件中。从这里开始,我想将组件添加到JFrame中
我如何访问Docker使用RoboMongo或类似工具创建的mongo数据库? 在使用Doncker之前,我已经在Linux机器上安装了mongodb。所以我不能在docker compse中使用端口“27017:27017”。yml。我使用“27018:27018”: 我可以使用RoboMongo查看我在预docker mongo中创建的所有数据库。但是我怎样才能进入码头工人的房间呢? 这是我的