我已经用FXML创建了一个布局,它由一个带有sideMenu的BorderPane和一个用于其他内容的innerBorderPane组成...
但是,由于我刚刚开始使用JavaFX中的FXML,所以我只需要知道如何做下一件事...
custom.FXML(这是主要的FXML布局)
<?import javafx.scene.text.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<VBox fx:controller="Transcoro.Controllers.TabManager" alignment="TOP_CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="442.0" prefWidth="338.0" spacing="5.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<HBox prefHeight="59.0" prefWidth="124.0">
<children>
<VBox prefHeight="59.0" prefWidth="90.0" style="-fx-background-color: blue;" />
<VBox alignment="CENTER_LEFT" prefHeight="59.0" prefWidth="165.0">
<children>
<Label text="Bienvenido, Rodolfo">
<font>
<Font name="System Bold" size="15.0" />
</font>
</Label>
<Label text="Administrador" />
</children>
<opaqueInsets>
<Insets />
</opaqueInsets>
<HBox.margin>
<Insets />
</HBox.margin>
<padding>
<Insets left="10.0" />
</padding>
</VBox>
</children>
<VBox.margin>
<Insets bottom="15.0" />
</VBox.margin>
</HBox>
<Button alignment="CENTER" contentDisplay="CENTER" maxWidth="1.7976931348623157E308" mnemonicParsing="false" nodeOrientation="LEFT_TO_RIGHT" text="Unidades" textAlignment="CENTER" textFill="#2491ff" />
<Button alignment="CENTER" contentDisplay="CENTER" maxWidth="1.7976931348623157E308" mnemonicParsing="false" nodeOrientation="LEFT_TO_RIGHT" text="Empleados" textAlignment="CENTER" textFill="#2491ff" />
<Button alignment="CENTER" contentDisplay="CENTER" maxWidth="1.7976931348623157E308" mnemonicParsing="false" nodeOrientation="LEFT_TO_RIGHT" text="Clientes" textAlignment="CENTER" textFill="#2491ff" />
<Button alignment="CENTER" contentDisplay="CENTER" maxWidth="1.7976931348623157E308" mnemonicParsing="false" nodeOrientation="LEFT_TO_RIGHT" text="Viajes" textAlignment="CENTER" textFill="#2491ff" />
</children>
<padding>
<Insets top="20.0" />
</padding>
</VBox>
sideMenu.FXML(这是sideMenu FXML布局)
<?import javafx.scene.text.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.paint.*?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<fx:root type="javafx.scene.layout.VBox" alignment="TOP_CENTER" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="442.0" prefWidth="338.0" spacing="5.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<HBox prefHeight="59.0" prefWidth="124.0">
<children>
<VBox prefHeight="59.0" prefWidth="90.0" style="-fx-background-color: blue;" />
<VBox alignment="CENTER_LEFT" prefHeight="59.0" prefWidth="165.0">
<children>
<Label text="Bienvenido, Rodolfo">
<font>
<Font name="System Bold" size="15.0" />
</font>
</Label>
<Label text="Administrador" />
</children>
<opaqueInsets>
<Insets />
</opaqueInsets>
<HBox.margin>
<Insets />
</HBox.margin>
<padding>
<Insets left="10.0" />
</padding>
</VBox>
</children>
<VBox.margin>
<Insets bottom="15.0" />
</VBox.margin>
</HBox>
<Button alignment="CENTER" contentDisplay="CENTER" maxWidth="1.7976931348623157E308" mnemonicParsing="false" nodeOrientation="LEFT_TO_RIGHT" text="Unidades" textAlignment="CENTER" textFill="#2491ff" />
<Button alignment="CENTER" contentDisplay="CENTER" maxWidth="1.7976931348623157E308" mnemonicParsing="false" nodeOrientation="LEFT_TO_RIGHT" text="Empleados" textAlignment="CENTER" textFill="#2491ff" />
<Button alignment="CENTER" contentDisplay="CENTER" maxWidth="1.7976931348623157E308" mnemonicParsing="false" nodeOrientation="LEFT_TO_RIGHT" text="Clientes" textAlignment="CENTER" textFill="#2491ff" />
<Button alignment="CENTER" contentDisplay="CENTER" maxWidth="1.7976931348623157E308" mnemonicParsing="false" nodeOrientation="LEFT_TO_RIGHT" text="Viajes" textAlignment="CENTER" textFill="#2491ff" />
</children>
<padding>
<Insets top="20.0" />
</padding>
</fx:root>
java(这是sideMenu JavaFX控制器)
package Transcoro.Controllers;
import javafx.fxml.FXMLLoader;
import javafx.scene.layout.VBox;
import java.io.IOException;
public class TabManager extends VBox {
public TabManager(){
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/resources/view/sideMenu.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
try {
fxmlLoader.load();
} catch (IOException exception) {
throw new RuntimeException(exception);
}
}
}
java(这是mainLayout JavaFX控制器)
package Transcoro.Core;
import Transcoro.Controllers.TabManager;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.*;
import java.io.IOException;
public class MainLayout extends BorderPane {
@FXML
private VBox sideMenu;
@FXML
private BorderPane innerContent;
@FXML
private HBox upperMenu;
@FXML
private ScrollPane contentScroll;
@FXML
private VBox otherPane;
public MainLayout(){
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/resources/view/Custom.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
try {
fxmlLoader.load();
} catch (IOException exception) {
throw new RuntimeException(exception);
}
TabManager _tabs = new TabManager();
this.setSideMenu(_tabs);
}
我想做的是以下几点:
我有两个布局,基布局是主布局,另一个FXML中的sideMenu布局
当我在根中实例化mainLayout时,效果很好,然后当我想将TabManager(VBox)插入sideMenu(来自FXML的VBox)时,它就不起作用了...我正在这样做:
TabManager _tabs = new TabManager();
this.setSideMenu(_tabs);
我唯一能让它发挥作用的方法就是加上一句:
this.setLeft(this.sideMenu);
或
this.setLeft(_tabs);
我认为它不应该起作用,为什么,因为我已经声明了sideMenu在左侧边框边,有什么想法我应该如何处理它吗?
首先,从custom.fxml中删除fx:controller=“transcoro.controllers.tabManager”
。控制器是MainLayout
,您将通过FXMLLoader
进行设置。
其次,不要在MainLayout
中调用FXMLLoader.setRoot(this);
。相反,您应该从custom.fxml中检索根节点,然后将其添加到MainLayout
,它本身就是一个BorderPane
。
Parent root = fxmlLoader.getRoot();
this.setCenter(root);
这将把Custom.fxml中的所有内容作为MainLayout
的中心子级。
第三,setleft()
正在工作,因为您正在将TabManager
实例(它是VBox
)设置为MainLayout
的左子级。setSideMenu()
(假定为@fxml private VBox sideMenu
的setter)不起作用,因为sideMenu
只是注入到控制器中的引用。更改此引用时,它不会更改原始布局。
问题内容: 我已经设置了一个Jenkins主节点,并且想要在同一网络中添加一个从节点。我需要在从机上安装Jenkins吗?还是可以在不首先安装Jenkins的情况下使用任意机器? 问题答案: 不,您根本不需要在任何从属计算机中安装Jenkins。 如果它是Linux从站,则只需要启用SSH访问即可。如果是Windows计算机,则使用Java并与 Jenkins提供的jar或通过Java Web c
我想使用独立的Ignite集群设置IgniteSet并在Scala应用程序中填充它。 从Ignite cluster返回的错误是: 是包的一部分,因此错误表示存在某种版本不匹配。但我明确检查了我的Ignite集群使用的是1.1.0版本--在我的中有文件;并且我的应用程序使用相同的版本--在我显式设置的中(也试图完全排除此包): 此外,我找不到使用此类的版本:1.0.0和1.1.0都有 此外,上面的
问题内容: 我有几个关于客户端节点的Elasticsearch问题: 我可以说:任何节点只要打开HTTP端口,我都可以将它们视为“客户端”节点,因为我们可以通过该节点进行搜索/索引。 实际上,当和时,我们将节点视为客户端节点,如果我设置了10个客户端节点,是否需要在客户端进行路由,这意味着如果我在代码 中将clientOne:9200 指定为ES门户,则 clientOne会 转发其他HTTP请求
我尝试了以下命令- ,它给出了- 此CLI仅用于开发,不用于生产 https://docs.confluent.io/current/CLI/index.html 使用confluent_current:/tmp/confluent.w1s9b10m启动zookeeper zookeeper是[UP]启动kafka kafka是[UP] 启动schema-registry schema-regis
问题内容: 如何为整个Eclipse项目设置java.library.path?我正在使用依赖于操作系统特定文件的Java库,并且需要找到.dll / .so / .jnilib。但是,应用程序始终会退出,并显示一条错误消息,指出在库路径中找不到这些文件。 我想将整个项目配置为使用库路径。我试图将路径作为VM参数添加到eclipse中的某些运行配置中,但这没有用。 问题答案: 不要弄乱图书馆的路径
节能设置允许您通过更改 GPS 记录速率,关闭手腕型心率测量和使用屏幕保护程序,延长训练时间。这些设置可以优化电池使用率,并在超长训练课上或电池电量不足时获得更多训练时间。 节能设置可在快捷菜单中找到。您可在单项训练暂停期间,以及多项运动训练过渡模式期间,在训练准备模式下访问快捷菜单。在训练准备模式中,您可通过轻触 或使用 LIGHT(背光灯)按钮访问快捷菜单。在暂停和过渡模式中,仅可使用 LIG