- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个简单的 BeatBox,其中根据所选的复选框播放不同的声音。
该程序应该有 256 个复选框,显示在 16x16 网格上。因此,当我通过直接代码(即没有 fxml 或场景生成器)构建 GUI 时,我可以轻松创建一个简单的循环来创建 256 个复选框,将它们添加到列表中,以便稍后使用它们,并将它们添加到网格。
我正在尝试改变这种方法,并使用场景生成器或直接在 fxml 文件上编码来实现,但我无法找到实现该方法的方法,而且我什至不知道这是否可行。为了弄清楚这一点,我遇到了这个疑问:- 有没有办法通过 fxml 或场景生成器创建某种类型的小部件列表,其中填充了组件负载(对于我给定的示例,具有 256 个复选框的列表),然后引用我的 Controller 上的列表类?
我真的不喜欢在场景构建器上拖放 256 个复选框,甚至在 fxml 上创建 256 个标签的想法。我认为该功能对于许多其他情况可能很有用。因此,如果可能的话,我很乐意提供帮助。
提前致谢!
最佳答案
FXML 格式不提供在循环中声明元素的方法。因为场景生成器只是一个 WYSIWYG FXML 文件编辑器也不提供此功能,也不提供声明和配置 256 个元素的快捷方式(例如通过对话框或其他方式)。这是在代码中添加节点是正确解决方案的情况之一。
为此,您需要将 FXML 文件链接到 Controller 。从那里您可以在 initialize
方法中创建所有 256 个 CheckBox
。此方法来自Initializable
接口(interface),但从 JavaFX 8 开始您不再需要实际实现该接口(interface)。相反,您只需声明一个名为 initialize
的无参数方法(请参阅 this ),并在非 public
时使用 @FXML
对其进行注释。
这是一个小例子:
FXML 文件
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<!-- replace with your root -->
<HBox xmlns="http://javafx.com/javafx/11.0.2" xmlns:fx="http://javafx.com/fxml/1"
fx:controller="com.example.Controller">
<GridPane fx:id="grid"/>
<!-- other elements... -->
</HBox>
Controller
package com.example;
import javafx.fxml.FXML;
import javafx.scene.control.CheckBox;
import javafx.scene.layout.GridPane;
public class Controller {
@FXML private GridPane grid;
private CheckBox[][] boxes; // for access by grid coordinates
@FXML
private void initialize() {
boxes = new CheckBox[16][16];
for (int row = 0; row < boxes.length; row++) {
for (int col = 0; col < boxes[0].length; col++) {
CheckBox box = new CheckBox();
grid.add(box, col, row);
boxes[row][col] = box;
}
}
}
}
关于java - 通过 JavaFX 中的 fxml 或场景构建器在场景上动态添加小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54951970/
我想向一些用户公开一个 Web 部件,但不是所有用户。如何在“添加 Web 部件”弹出窗口中显示或隐藏 Web 部件?我想通过代码来做到这一点,我希望使用 SharePoint 角色来实现这一点。 最
我无法创建两个以上的 StatusBar 部分: HWND hStatusBar = CreateWindowEx(0, STATUSCLASSNAME, "", WS_CHILD | WS_VISI
使用 SharePoint 2007,如何在编辑页面模式下允许将 CEWP 添加到“添加 Web 部件”对话框的选择菜单?目前,我只能添加公告、日历、链接、共享文档、任务,但我无法添加 CEWP。我可
哪个 Web 部件以及如何配置它以查看来自不同网站集的列表? 请注意,我不想查看页面,而是查看列表。例如,在单独的网站集下查看来自不同团队网站的公告。 预先感谢您的帮助。 最佳答案 Data Form
以下是我在 FeatureDeactivation 事件处理程序中添加的代码片段。我无法获得删除 System.Web.UI.WebControls.WebParts 类型的 webpart 的解决方
我一直在尝试跟踪来自以下方面的信息: Long URL clipped to stop breaking the page 和 http://msdn.microsoft.com/en-us/libr
我想创建一个自定义 Web 部件,它具有 1 个以上的筛选器 Web 部件,并且可以在运行时/设计时连接到报表查看器 Web 部件(集成模式)。 我为此搜索了很多,但找不到一种方法来让单个 Web 部
我正在尝试创建一个 Web 部件,使用户无需离开 AllItems.aspx 页面即可编辑项目。 Web 部件应具有与 EditForm.aspx 页面类似的功能。 我已经使用 ConnectionC
这些年发布的许多应用程序都有新的 GUI 部件。iTunes 或 Twitter.app 中垂直布局的最小、最大和关闭按钮(但最新的具有默认布局),Safari 和终端中的选项卡控件,GarageBa
在具有数据库依赖性的 WSS3 或 MOSS2007 中部署 Web 部件的最佳方法是什么? .wsp 是否应该包含创建数据库的代码,我应该将 .wsp 封装在另一个处理数据库创建的安装程序中,还是应
我在我们位于 http://sharepoint:12345 的 moss 服务器上创建了一个新的共享点站点并毫无问题地向其添加了 CQWP。 我有一个指向同一台服务器的域名。所以我指向了http:/
在官方 Office 2007 站点中有许多对筛选器 Web 部件的引用。当我尝试添加其中之一时,我的 Sharepoint 中的 Web 部件列表没有显示任何筛选器 Web 部件。 如果有人遇到相同
我被要求在 Sharepoint 中创建一个 Web 部件,列出用户在网站集中访问的最后 10 个文档。 我的客户想要一种快速的方式让用户访问文档,这样他们就不必翻遍文件夹结构来查找文档,因为大多数时
我需要使用 C# 以编程方式将 SharePoint Web 部件“站点用户”添加到页面。 我知道如何添加 Web 部件,但如何从 Share Point 获取“站点用户”Web 部件?我不知道如何实
我正在使用 MEF 在我的应用程序中加载插件。一切正常,但我希望在将新部件放入我的应用程序文件夹时发现它们。这可能吗? DirectoryCatalog 有一个 Changed 事件,但我不确定它是如
我有一个 Winforms 桌面应用程序正在加载具有相同接口(interface)类型的多个 MEF 部件。 问题:当我尝试加载多个相同类型时,出现以下异常: 组成保持不变。由于以下错误,更改被拒绝:
我有一个内容查询 Web 部件,它按内容类型对网站集进行查询。我已按内容类型对其进行了分组,因此我有: -- Agenda (Content Type) ----Agenda #1 ----Agend
考虑以下 SharePoint 站点层次结构: - Site Collection - Site1 - Subsite1 - AnotherSubsite1
好吧,在我的 SharePoint (2013) 网站中,我制作了一个简单的 JavaScript Web 部件,每五分钟刷新一次页面。我去调整时间,在刷新前输入等待时间的地方退格,然后不假思索地退出
我不知道 Sharepoint 脚本,我的同事也不知道 JavaScript。他使用了他在 http://www.wonderlaura.com/Lists/Posts/Post.aspx?ID=22
我是一名优秀的程序员,十分优秀!