- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过从数据库获取数据来动态添加对象/元素。我想要实现的是,我想复制具有相同 attributes
的相同 HBox
,例如 FontAwesomeIcon
等。但是,我只是想更改标签。
我希望能够动态创建多个 HBox
,与其他类似,但只需更改我从数据库获取的值的 Labels
即可。
FXML
类
<?xml version="1.0" encoding="UTF-8"?>
<?import de.jensd.fx.glyphs.fontawesome.FontAwesomeIconView?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Separator?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.Circle?>
<?import javafx.scene.text.Font?>
<TabPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0"
prefWidth="700.0" stylesheets="@stylesheet.css" tabClosingPolicy="UNAVAILABLE"
xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="sample.Controller">
<tabs>
<Tab text="Members">
<graphic>
<FontAwesomeIconView glyphName="GROUP" glyphStyle="-fx-fill:#4D4D4D" size="14"/>
</graphic>
<content>
<AnchorPane prefHeight="371.0" prefWidth="700.0">
<children>
<ScrollPane hbarPolicy="NEVER" prefHeight="381.0" prefWidth="172.0">
<content>
<VBox fx:id="vboxAdding" prefHeight="57.0" prefWidth="157.0"
style="-fx-background-color: #4D4C4F;">
<children>
<ListView fx:id="sidebarListview" prefHeight="200.0" prefWidth="157.0"/>
<HBox alignment="CENTER_LEFT" styleClass="HBox-Shadow">
<children>
<FontAwesomeIconView glyphName="SEARCH" glyphStyle="-fx-fill:#B2B2B2"
size="22"/>
<TextField promptText="Search"
style="-fx-background-color: transparent;-fx-text-fill: white"
HBox.hgrow="ALWAYS">
<font>
<Font size="15.0"/>
</font>
</TextField>
</children>
<padding>
<Insets bottom="5.0" left="10.0" top="5.0"/>
</padding>
</HBox>
<HBox fx:id="sidebarMembers" onMouseClicked="#openSidebarMembers">
<children>
<FontAwesomeIconView glyphName="USER" glyphStyle="-fx-fill:#B2B2B2"
size="22">
<HBox.margin>
<Insets top="3.0"/>
</HBox.margin>
</FontAwesomeIconView>
<VBox HBox.hgrow="ALWAYS">
<children>
<Label fx:id="sidebarName" text="Admin" textFill="WHITE">
<font>
<Font name="System Bold" size="18.0"/>
</font>
</Label>
<Label text="Administrator" textFill="WHITE"/>
</children>
<padding>
<Insets left="10.0"/>
</padding>
</VBox>
</children>
<padding>
<Insets bottom="10.0" left="10.0" top="10.0"/>
</padding>
</HBox>
<HBox fx:id="sidebarMembers1" onMouseClicked="#openSidebarMembers">
<children>
<FontAwesomeIconView glyphName="USER" glyphStyle="-fx-fill:#B2B2B2"
size="22">
<HBox.margin>
<Insets top="3.0"/>
</HBox.margin>
</FontAwesomeIconView>
<VBox HBox.hgrow="ALWAYS">
<children>
<Label fx:id="sidebarName1" text="Michael" textFill="WHITE">
<font>
<Font name="System Bold" size="18.0"/>
</font>
</Label>
<Label text="Administrator" textFill="WHITE"/>
</children>
<padding>
<Insets left="10.0"/>
</padding>
</VBox>
</children>
<padding>
<Insets bottom="10.0" left="10.0" top="10.0"/>
</padding>
</HBox>
</children>
</VBox>
</content>
</ScrollPane>
<VBox alignment="TOP_CENTER" layoutX="172.0" prefHeight="381.0" prefWidth="538.0"
style="-fx-background-color: #4D4C4F;">
<children>
<Circle fx:id="bigImageView" fill="BLUE" radius="50.0">
<VBox.margin>
<Insets bottom="20.0" top="30.0"/>
</VBox.margin>
</Circle>
<VBox alignment="TOP_CENTER">
<children>
<Label fx:id="summaryTitleName" text="Admin" textFill="WHITE">
<font>
<Font size="20.0"/>
</font>
</Label>
<Label text="Administrator" textFill="WHITE">
<font>
<Font name="System Italic" size="15.0"/>
</font>
<VBox.margin>
<Insets/>
</VBox.margin>
<padding>
<Insets bottom="5.0"/>
</padding>
</Label>
<Separator prefWidth="200.0"/>
</children>
</VBox>
<HBox alignment="CENTER" prefHeight="170.0" prefWidth="528.0">
<children>
<VBox prefHeight="168.0">
<children>
<Label text="Full Name: Admin Admin" textFill="WHITE">
<font>
<Font size="15.0"/>
</font>
<VBox.margin>
<Insets bottom="10.0" top="10.0"/>
</VBox.margin>
</Label>
<Label text="Position: Administrator" textFill="WHITE">
<font>
<Font size="15.0"/>
</font>
<VBox.margin>
<Insets bottom="10.0" top="10.0"/>
</VBox.margin>
</Label>
<Label text="Hourly Rate: £19.99" textFill="WHITE">
<font>
<Font size="15.0"/>
</font>
<VBox.margin>
<Insets bottom="10.0" top="10.0"/>
</VBox.margin>
</Label>
<Label text="Graduated: MDX University" textFill="WHITE">
<font>
<Font size="15.0"/>
</font>
<VBox.margin>
<Insets bottom="10.0" top="10.0"/>
</VBox.margin>
</Label>
</children>
<HBox.margin>
<Insets/>
</HBox.margin>
<padding>
<Insets left="10.0" right="10.0"/>
</padding>
</VBox>
<VBox prefHeight="168.0">
<children>
<Label text="Languages: Java, C++, JavaScript" textFill="WHITE">
<font>
<Font size="15.0"/>
</font>
<VBox.margin>
<Insets bottom="10.0" top="10.0"/>
</VBox.margin>
</Label>
<Label text="Country: United Kingdom" textFill="WHITE">
<font>
<Font size="15.0"/>
</font>
<VBox.margin>
<Insets bottom="10.0" top="10.0"/>
</VBox.margin>
</Label>
<Label text="City: Wembley, London" textFill="WHITE">
<font>
<Font size="15.0"/>
</font>
<VBox.margin>
<Insets bottom="10.0" top="10.0"/>
</VBox.margin>
</Label>
<Label text="Address: 64, Beverley Gardens" textFill="WHITE">
<font>
<Font size="15.0"/>
</font>
<VBox.margin>
<Insets bottom="10.0" top="10.0"/>
</VBox.margin>
</Label>
</children>
<padding>
<Insets left="10.0" right="10.0"/>
</padding>
<HBox.margin>
<Insets/>
</HBox.margin>
</VBox>
</children>
</HBox>
</children>
</VBox>
</children>
</AnchorPane>
</content>
</Tab>
<Tab text="Overview">
<graphic>
<FontAwesomeIconView glyphName="PIE_CHART" glyphStyle="-fx-fill:#4D4D4D" size="14"/>
</graphic>
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0"/>
</content>
</Tab>
<Tab text="Control Panel">
<graphic>
<FontAwesomeIconView glyphName="WRENCH" glyphStyle="-fx-fill:#4D4D4D" size="14"/>
</graphic>
<content>
</content>
</Tab>
</tabs>
</TabPane>
那么我该如何实现这一点,有没有办法将元素复制/粘贴到 FXML 中,然后只需更改该元素内部的标签?
HBoxes
的数量不是静态的,它取决于我的数据库中有多少成员。
最佳答案
您可以制作可重用的HBox
fxml:
NodeTemplate.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.HBox?>
<HBox fx:id="template" alignment="CENTER" style="fx-border-width: 3; -fx-border-color: blue;" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="NodeTemplateController">
<children>
<Label fx:id="content" text="" textAlignment="CENTER" />
</children>
</HBox>
及其 Controller :
NodeTemplateController.java
import javafx.fxml.FXML;
import javafx.scene.control.Label;
public class NodeTemplateController{
@FXML
Label content;
void setContent(String txt){
content.setText(txt);
}
}
您不断添加 NodeTemplate
实例的主容器:
Main.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<VBox prefHeight="200.0" spacing="5.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="MainController">
<children>
<Button fx:id="add" text="Click To Add Nodes" textAlignment="CENTER" />
<ScrollPane prefHeight="200.0">
<content>
<VBox fx:id="containerPane"/>
</content>
</ScrollPane>
</children>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</padding>
</VBox>
使用 Controller 在鼠标单击时添加NodeTemplate
实例:
MainController.java
import java.io.IOException;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
public class MainController{
@FXML
private Pane containerPane;
@FXML
private Button add;
private static int counter = 0;
@FXML
private void initialize(){
add.setOnAction(e -> addNode());
}
private void addNode() {
FXMLLoader loader = new FXMLLoader();
try {
Node node = loader.load(getClass().getResource("NodeTemplate.fxml").openStream());
containerPane.getChildren().add(node);
//get the controller
NodeTemplateController controller = (NodeTemplateController)loader.getController();
controller.setContent("Node number "+ counter++); //set label
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
要测试它,请使用:
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("Main.fxml"));
primaryStage.setScene(new Scene(root));
primaryStage.show();
}
关于java - 创建多个具有相同属性的 HBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53798083/
HBox 是一个容器组件,用于在一条水平线上保留和排列控件。然而,我在我的应用程序中的许多 HBox 容器之一中遇到了控件的“困惑”放置,并且该放置绝对不像水平线,而且,包含在 HBox 中的控件与
我正在尝试为我制作的模块( see this SO question )制作一个输入小部件。 输入小部件应该有一个标题栏和下面可变数量的输入行。我想在每个输入行的末尾有一个删除按钮。 理想情况下,删除
我目前正在开发一个 javaFX 项目,该项目必须处理将 3 个 Pane 堆叠在一起的问题。顶部一个包含 5 个单选按钮,中间包含一个文本“编程很有趣”,底部 Pane 包含两个带有“”符号。基本上
我们在我们的应用程序中使用 ExtJS4。但是我们面临 hbox 布局的问题。我们需要从右侧置换项目。通常在 ExtJS4 中,hbox 布局中的项目从左侧开始并向右移动。但是我们需要从右侧开始向左侧
我有一个 hbox 布局容器,可容纳 2 个面板,当面板超过容器的高度时,就没有垂直滚动条。 我希望滚动条出现在父水平盒子面板上,而不是子项目上。 可以吗? 最佳答案 您应该能够使用 hbox 布局将
我试图通过从数据库获取数据来动态添加对象/元素。我想要实现的是,我想复制具有相同 attributes 的相同 HBox ,例如 FontAwesomeIcon 等。但是,我只是想更改标签。 这就是我
我不明白为什么我的 HBox 周围没有边框?现在什么也没有发生,除了 eclipse 抛出 IllegalArgumentException 之外,因为我猜是 this.setCenter(hbox)
我放置了 HBox进入 BorderPane 的中心,那就是唯一直接Node在DialogPane上我的Dialog通过使用此代码: public GameDialog(Player[] pl
我有一个可调整大小的面板,其中包含另一个内部带有水平盒布局的面板。整个显示设置是正确的,期望一种行为;渲染后用鼠标调整主面板大小时;它不是内部自动调整项目。 要成功适合那些项目; 需要再次调整主面板的
是否可以有一个带有关闭按钮的 HBox(即用于删除 HBox 的子按钮)? I我计划将其实现为这样的: 我想创建一个自己的类,它继承自 HBox 类,并且在实例化后就已经有一个关闭按钮。 关闭按钮需要
我尝试简单的测试 package sample; import javafx.application.Application; import javafx.geometry.Insets; impor
所以,我似乎无法让 HBox 出现在我的应用程序中。 Button 出现了,但 HBox 没有出现。有人可以让我知道我做错了什么吗? package cyanlauncher; import java
我的 Javafx 应用程序中有一个 HBox,配置如下 HBox belowBox = new HBox(10); belowBox.getStyleClass().addAll("pane",
我一直在开发一个使用 JavaFX 的软件,但我遇到了一个愚蠢但令人担忧的问题。 在代码的某些部分,我有一个HBox,在它里面有三个项目:一个image,一个label和一个垂直框。 问题是我想让 i
如何在 HBox 中隐藏一个项目,并让该项目使用的空间可供其他项目使用。 TitledPane legendPane = new TitledPane("Legend", _legend); lege
在 Windows 7 中的 gtk+3.0 中。 我正在创建一个按钮并将它们打包成水平框。我已将扩展设置为 FALSE。现在按钮不是在 x 方向扩展而是垂直扩展。我不希望按钮也垂直扩展。 int m
我有一个包含 javafx.scene.layout.HBox 的 JavaFX 场景。此 HBox 包含两个子项,一个 javafx.scene.control.ComboBox 后跟一个 java
考虑以下代码: HBox hbox = new HBox(); Button button1 = new Button("A"); Button button2 = new Button("B");
我无法让 buttonContainer HBox 中的按钮工作,因为我根本无法点击它们,它们被“卡住”了,所以说话。这种情况在多个 IDE 中都会发生,所以不可能是这样。我不明白为什么他们被卡住而无
我正在尝试创建一个程序,当单击按钮时它将显示脸部。例如,微笑按钮将显示笑脸,思考按钮将显示思考脸。问题是,当选择一个形状时,如何删除其他两个形状? 我尝试过以下方法: frownButton.setO
我是一名优秀的程序员,十分优秀!