- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个用 fxml 编写的边框 Pane ,它的左 Pane 和中央 Pane 具有可互换的布局。
边框 fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.image.*?>
<?import java.net.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.text.*?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<BorderPane fx:id="mainBorderPane" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="Program.gui.MainSceneController">
<left>
<ScrollPane fitToWidth="true" BorderPane.alignment="CENTER">
<content>
<VBox id="sideMenu" spacing="10.0" styleClass="side-menu">
<children>
<Button fx:id="buttonCash" contentDisplay="TOP" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#buttonCashPress" styleClass="side-menu-button" text="Cash">
<cursor>
<Cursor fx:constant="HAND" />
</cursor>
<graphic>
<ImageView fitHeight="50.0" fitWidth="50.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../../Libraries/Icons/pos.png" />
</image>
</ImageView>
</graphic></Button>
<Button fx:id="buttonUsers" contentDisplay="TOP" layoutX="10.0" layoutY="10.0" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#buttonUsersPress" styleClass="side-menu-button" text="Users">
<cursor>
<Cursor fx:constant="HAND" />
</cursor>
<graphic>
<ImageView fitHeight="50.0" fitWidth="50.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../../Libraries/Icons/users.png" />
</image>
</ImageView>
</graphic></Button>
<Button fx:id="buttonInventory" contentDisplay="TOP" layoutX="10.0" layoutY="35.0" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#buttonInventoryPress" styleClass="side-menu-button" text="Inventory">
<cursor>
<Cursor fx:constant="HAND" />
</cursor>
<graphic>
<ImageView fitHeight="50.0" fitWidth="50.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../../Libraries/Icons/inventory.png" />
</image>
</ImageView>
</graphic></Button>
<Button fx:id="buttonCustomers" contentDisplay="TOP" layoutX="10.0" layoutY="60.0" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#buttonCustomersPress" styleClass="side-menu-button" text="customers">
<cursor>
<Cursor fx:constant="HAND" />
</cursor>
<graphic>
<ImageView fitHeight="50.0" fitWidth="50.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../../Libraries/Icons/customers.png" />
</image>
</ImageView>
</graphic></Button>
<Button fx:id="buttonLogout" contentDisplay="TOP" layoutX="31.0" layoutY="232.0" maxWidth="1.7976931348623157E308" mnemonicParsing="false" onAction="#buttonLogoutPress" styleClass="side-menu-button" text="Log out">
<cursor>
<Cursor fx:constant="HAND" />
</cursor>
<graphic>
<ImageView fitHeight="50.0" fitWidth="50.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../../Libraries/Icons/log_out.png" />
</image>
</ImageView>
</graphic>
</Button>
</children>
</VBox>
</content>
<BorderPane.margin>
<Insets />
</BorderPane.margin>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</padding>
</ScrollPane>
</left>
<bottom>
<HBox BorderPane.alignment="CENTER">
<children>
<Label fx:id="currentUserLabel" styleClass="current-user-label" text="Current user: name here">
<font>
<Font size="15.0" />
</font>
</Label>
<AnchorPane HBox.hgrow="ALWAYS" />
<Label fx:id="currentTimeLabel" layoutX="10.0" layoutY="10.0" styleClass="current-time-label" text="TIME">
<font>
<Font size="15.0" />
</font>
</Label>
<AnchorPane layoutX="170.0" layoutY="10.0" HBox.hgrow="ALWAYS" />
<Label fx:id="currentDateLabel" layoutX="170.0" layoutY="10.0" styleClass="current-date-label" text="DATE">
<font>
<Font size="15.0" />
</font>
</Label>
</children>
<padding>
<Insets left="10.0" right="10.0" />
</padding>
</HBox>
</bottom>
<stylesheets>
<URL value="@ScreenStylesheet.css" />
</stylesheets>
</BorderPane>
fxml 文件中找到的按钮之一将在 Controller 中运行一些代码,以使用从另一个 fxml 文件加载的 VBox 更改边框 Pane 的右侧。
现在的问题是如何告诉右 Pane 的 fxml 使用与主边框 Pane 相同的 Controller ?换句话说,我想继承 Controller 。
如果我在其 fxml 中使用 fx:controller="Program.gui.MainSceneController"
定义 Controller ,它只会创建一个新实例,如果我不定义它,它只会给出错误因为里面的按钮没有可以引用的 Controller 。
编辑:有人询问了更改屏幕右侧的代码,它是:(注意:这是在 Controller 中找到的)
//mainBorderPane is gotten from the main fxml file.
FXMLLoader loader = new FXMLLoader(getClass().getResource("cashRightArea.fxml"));
mainBorderPane.setRight(loader.load());
最佳答案
如果您想将特定 Controller 分配给 View ,可以这样做:
Main.fxml:
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.*?>
<?import java.lang.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane minHeight="400.0" minWidth="400.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.MainController">
<children>
<Label fx:id="myLabel" layoutX="28.0" layoutY="53.0" text="Label" />
<Accordion layoutX="42.0" layoutY="158.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" />
<AnchorPane fx:id="childContainer" layoutX="56.0" layoutY="177.0" maxHeight="200.0" minHeight="200.0" prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" />
<Button fx:id="loadChild" layoutX="135.0" layoutY="43.0" mnemonicParsing="false" text="Load child panel" />
</children>
</AnchorPane>
MainController.java:
public class MainController implements Initializable{
@FXML
protected Label myLabel;
@FXML
private Button loadChild;
@FXML
private AnchorPane childContainer;
@FXML
protected Button updateButton;
StringProperty myStringProp=new SimpleStringProperty();
private void loadChildpanel() {
System.out.println(this.hashCode());
FXMLLoader loader = new FXMLLoader(getClass().getResource("Child.fxml"));
Node childNode;
try {
loader.setController(this);
childNode = (Node) loader.load();
childContainer.getChildren().add(childNode);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void updateLabel() {
myStringProp.setValue("updated text");
System.out.println(this.hashCode());
}
@Override
public void initialize(URL location, ResourceBundle resources) {
myStringProp.set("Initial text");
loadChild.setOnAction(e->loadChildpanel());
myLabel.textProperty().bind(myStringProp);
if(updateButton!=null)updateButton.setOnAction(e->updateLabel());
}
}
Child.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 prefHeight="100.0" prefWidth="180.0" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8">
<children>
<Button fx:id="updateButton" layoutX="10.0" layoutY="18.0" mnemonicParsing="false" prefHeight="65.0" prefWidth="161.0" text="Update" />
</children>
</AnchorPane>
确保您没有在 Child.fxml 文件中指定 Controller 。这个解决方案有效, subview 中的按钮可以更新主视图上的标签。
但是,这是一个令人讨厌的解决方案,对于不同的 View 使用相同的 Controller 并不是一个好的做法。拥有 View Controller 对会更干净。当您需要显示另一个 View 时,您可以从父 Controller 执行以下操作:
FXMLLoader loader = new
FXMLLoader(getClass().getResource(InterfaceToNetworkController.UI_PATH));
Node rootNode = (Parent) loader.load();
InterfaceToNetworkController childController = loader.getController();
mainBorderPane.setRight(rootNode);
希望对你有帮助
关于java - Fxml 需要获得与其所在的 fxml 相同的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52264931/
是 if(a == 0 && b == 0 && c == 0) { return; } 一样 if(a == 0) { return; } if(b == 0) { return; } if(c =
我想做这样的事情: Class A Class B extends A Class C extends A B b = new B(); C c = new C(); b->setField("foo
我对 Mysql 世界很天真......:)我试图使用连接从表中查询, 我遇到结果集问题...表结构如下 下面... VIDEO_XXXXX | Field | Type
我最近问过关于从另一个类获取类的唯一实例的问题。 ( How to get specific instance of class from another class in Java? ) 所以,我正
假设我们有两种类型 using t1 = int*; using t2 = int*; 我知道 std::is_same::value会给我们true .什么是,或者是否有模板工具可以实现以下目标?
对于我的一个应用程序,我假设比较 2 个字符串的第一个字符比比较整个字符串是否相等要快。例如,如果我知道只有 2 个可能的字符串(在一组 n 字符串中)可以以相同的字母开头(比如说 'q'),如果是这
我想在我的NXP LPC11U37H主板(ARM Cortex-M0)上分析一些算法,因为我想知道执行特定算法需要多少个时钟周期。 我编写了这些简单的宏来进行一些分析: #define START_C
我在 Excel 中创建了一个宏,它将在 Excel 中复制一个表格,并将行除以我确定的特定数字(默认 = 500 行),并为宏创建的每个部门打开不同的工作表。 使用的代码是这样的: Sub Copy
我想根据第一个字典对第二个字典的值求和。如果我有字典 A 和 B。 A = {"Mark": ["a", "b", "c", "d"], "June": ["e", "a"], "John": ["a
当我这样做时 system()在 Perl 中调用,我通常根据 perldocs 检查返回码.嗯,我是这么想的。大部分时间 $rc!=0对我来说已经足够了。最近我在这里帮助了两个遇到问题的人syste
在我的进度条上,我试图让它检测 div 加载速度。 如果 div 加载速度很快,我想要实现的目标将很快达到 100%。但进度条的加载速度应该与 div 的加载速度一样快。 问题:如何让我的进度条加载
当我获得与本地时间相同的时间戳时,firebase 生成的服务器时间戳是否会自动转换为本地时间,或者我错过了什么? _firestore.collection("9213903123").docume
根据the original OWL definition of OWL DL ,我们不能为类和个体赋予相同的名称(这是 OWL DL 和 OWL Full 之间的明显区别)。 "Punning" i
我有两个输入复选框: 尝试使用 jQuery 来允许两个输入的行为相同。如果选中第一个复选框,则选中第二个复选框。如果未检查第 1 个,则不会检查第 2 个。反之亦然。 我有代码: $('inpu
可以从不同系统编译两个相同的java文件,但它们都有相同的内容操作系统(Windows 7),会生成不同的.class文件(大小)? 最佳答案 是的,您可以检查是否有不同版本的JDK(Java Dev
我正在清理另一个人的正则表达式,他们目前所有的都以结尾 .*$ 那么下面的不是完全一样吗? .* 最佳答案 .*将尽可能匹配,但默认情况下为 .不匹配换行符。如果您要匹配的文本有换行符并且您处于 MU
我使用 Pick ,但是如何编写可以选择多个字段的通用PickMulti呢? interface MyInterface { a: number, b: number, c: number
我有一个 SQL 数据库服务器和 2 个具有相同结构和数据的数据库。我在 2 个数据库中运行相同的 sql 查询,其中一个需要更长的时间,而另一个在不到 50% 的时间内完成。他们都有不同的执行计划。
我需要你的帮助,我有一个包含两列的表,一个 id 和 numpos,我希望 id 和 numops 具有相同的结果。 例子: $cnx = mysql_connect( "localhost", "r
如何将相同的列(在本例中按“级别”排序)放在一起?我正在做一个高分,我从我的数据库中按级别列出它们。如果他们处于同一级别,我希望他们具有相同的 ID。 但是我不想在别人身上显示ID。只有第一个。这是一
我是一名优秀的程序员,十分优秀!