Tag: javafx 8

如何在javafx中获得固定数量的没有填充的调整大小的单元格?

背景: 我正在研究实时规划算法的可视化工具。 “世界”是在一个文本文件中提供的,其中'_'是一个空闲单元格,'#'是一个被阻止的单元格。 以下是一个例子: 41 21 ___________________ @ _____________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _ _ ####################################### _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ ___________________ * _____________________ 窗口在每一行中具有完全相同数量的单元格,并且在每一列中具有完全相同数量的单元格是非常重要的。 我必须在Kotlin中可视化,这是与Java 100%互操作的。 我决定尝试javafx,版本8.0.60。 在对javafx布局做一些研究后,我决定使用TilePane是我最好的选择。 我到目前为止: 这是我迄今为止。 如果仔细观察,可以在TilePane的每个节点中看到非常少量的填充。 由于机器人从瓦片到瓦片,这个少量的填充引入了一个小错误,因为机器人使用瓦片的宽度和高度移动,而不考虑填充。 这使得机器人在走过迷宫时不会在瓷砖的中心。 另外,我的解决方案非常依赖窗口的大小。 如果我稍微调整一下,则世界显示不正确,因为每行和每列的固定单元格数目不同。 问题: 这些问题是重要的。 是否有一个布局或设置,将提供给我每行和每列固定数量的单元格? 展现世界取决于这一点。 如何摆脱布局中每个节点之间的填充? 如果可能的话,我想调整布局,同时保持前两个不变量。 有谁知道一个办法做到这一点? 我的代码的相关部分: 注意:robot.fill与调用robot.setFill相同,Kotlin在实例化对象时省略了类型和关键字new。 val […]

即使UI线程似乎响应,标签文本也不会更新

我正在使用JDK 8u121上的Kotlin 1.1.51构建TornadoFX 1.7.11的应用程序。 我试图在一个单独的线程中执行长时间运行的任务,并使用进度条和标签在UI中显示进度。 奇怪的是,标签没有更新。 我认为,也许我以某种方式在UI线程上运行的任务,它卡住了,但进度条工作和用户界面是否响应(控制工作等)。 我也尝试用ScenicView手动编辑标签,它工作。 我没有想法,你们能帮忙吗? 这里有一些简化的代码片段: MainView.kt class MainView : View("") { private val controller: MainController by inject() override val root = borderpane { bottom(TasksView::class) } init { controller.reloadTranslations().completed.onChange { // do some lightweight UI stuff } } } MainController.kt class MainController : Controller() { private val tasksController: TasksController by inject() […]

在TableView中的“编辑”方法的问题

我正在学习kotlin和javafx。 我正在尝试设置一个事件。 这个Java代码的作品: tableView.setOnKeyPressed(event -> { TablePosition<?, ?> pos = tableView.getFocusModel().getFocusedCell(); if (pos != null && event.getCode().isLetterKey()) { tableView.edit(pos.getRow(), pos.getTableColumn()); } }); 在kontlin相同的代码(不工作): class DynamicTableView : Application() { @Throws(Exception::class) override fun start(stage: Stage) { val tableView = TableView<ObservableList<String>>() tableView.setEditable(true) tableView.getSelectionModel().setCellSelectionEnabled(true) tableView.setOnKeyPressed { event -> val pos = tableView.focusModel.focusedCell if (pos != null && event.code.isLetterKey) { […]

Kotlin中的TableView回调

我学习使用JavaFX UI控件示例12-12将地图数据添加到表中 它在java中的作品: TableColumn<Map, String> firstDataColumn = new TableColumn<>("Class A"); TableColumn<Map, String> secondDataColumn = new TableColumn<>("Class B"); firstDataColumn.setCellValueFactory(new MapValueFactory(Column1MapKey)); firstDataColumn.setMinWidth(130); secondDataColumn.setCellValueFactory(new MapValueFactory(Column2MapKey)); secondDataColumn.setMinWidth(130); TableView table_view = new TableView<>(generateDataInMap()); table_view.setEditable(true); table_view.getSelectionModel().setCellSelectionEnabled(true); table_view.getColumns().setAll(firstDataColumn, secondDataColumn); Callback<TableColumn<Map, String>, TableCell<Map, String>> cellFactoryForMap = new Callback<TableColumn<Map, String>, TableCell<Map, String>>() { @Override public TableCell call(TableColumn p) { return new TextFieldTableCell(new StringConverter() { […]