Tag: javafx

JavaFX特定的音频输出

我对JavaFX和Java Sound API有一点问题。 我想同时使用电脑的2个输出(USB-Headset和普通盒子)。 使用java声音api获取所有输出没有问题,但java声音api不支持MP3文件。 是否可以在JavaFX中配置输出? 这个问题有另一种解决方案吗?

JavaFX TableView分页 – 无法创建基于fxml的解决方案

我在我的项目中使用JavaFX(也是Spring,Hibernate等)。 我正在尝试为TableView创建分页。 我找到了许多合理的解决方案,但所有这些都是基于控制器的解决方案。 这个解决方案中最好的。 但在我的情况下 – 我使用多个fxml文件,这些文件是在SceneBuilder中创建的,包含所有巨大的设计选项,并且包含TabPane,对于一个选项卡,我有一个FXML文件和一个控制器。 我有一个基本文件导入其他文件,在我的Main类中我加载它: 在我的statistics.fxml的控制器类中,我正在创建TableView和列: @FXML public TableView statisticsTableView; @FXML public TableColumn objectColumn; @FXML public TableColumn noteColumn; @FXML public TableColumn stageColumn; @FXML public TableColumn dateColumn; @FXML public TableColumn vagonColumn; @FXML public TableColumn repeatColumn; @FXML public TableColumn remarkIdColumn; 以及此解决方案中的所有其他内容。 来自实体的信息被添加到我的表中,一切正常。 但! 当我试图添加分页时,问题就开始了,因为我无法理解我应该如何做到这一点。 我的Main方法如下所示: public class Main extends Application { public static void […]

Javafx程序可以通过GUI和命令行控制吗?

我正在使用Javafx GUI,但我还需要命令行提供相同级别的function。 我想知道什么是最好的方法来创建一个同时具有命令行和Javafxfunction的主类,这样你就可以在GUI上做一件事,然后在命令行上做下一件事。 命令行还将更新GUI显示。

如何将数据从java程序传递到javafx应用程序图表?

我是JavaFX的新手,但我不是Java新手。 我有一个庞大的复杂系统,可以在循环中产生一些结果。 我想要实现的是在JavaFX图表上绘制每次迭代的结果。 我这样做对java jFreeChart库没有任何问题,但现在我正在尝试切换到JavaFX。 图表看起来更花哨,我喜欢风格的处理方式。 无论如何,我正在努力了解如何在JavaFX应用程序中向XYChart.Series对象添加点。 oracle网站上的所有教程都以应用程序知道先验的一些固定点开始,并使用以下内容添加它们: `series.getData().add(new XYChart.Data(1, 23));` 但我想要实现的是有点不同。 在我的情况下,我的应用程序产生一些结果,一旦它们生成(随机时间)我想在图表上绘制它们。 我使用javafx.application.Application启动一个线程,但是当我尝试向Series对象添加一些点时,我得到一个java.lang.IllegalStateException: Not on FX application thread; currentThread = main java.lang.IllegalStateException: Not on FX application thread; currentThread = mainexception。 将数据点传递给JavaFX图表的正确方法是什么? 我认为最接近这种方法的方法是覆盖Event类型,Event对象并创建一个完整的事件处理结构……但对于我想要归档的简单事情,这看起来太复杂了! 在您看来,请您告诉我,这样做的最佳/最简单方法是什么? 编辑:这里有一些代码供您查看并给我一些建议: public class Chart extends Application { private final static XYChart.Series series = new XYChart.Series(); public static void addValue(double gen, double […]

保存JavaFX快照时获取黑色图像

我已经设置了一个后台任务,在给定的面板/图表可见后等待几秒钟。 这是通过在后台非GUI线程上运行sleep来执行的,然后在唤醒时运行a Platform.runLater 创建快照和图像。 在保存图像的真实“动作”出现之前,我们可以看到窗口出现: 在该图像渲染时,我们有一个由Task放置的后台代码。 5000毫秒后,后台任务唤醒并启动Platform.runLater将场景/窗格/图表保存到文件中。 这是快照和图像代码: 所有这些都通过提交给ThreadPool的Task在后台线程上发生 Thread.sleep(5000) // Wait for images to be rendered – // they are visually confirmed to be available at about 1000 ms actually javafx.application.Platform.runLater(new Runnable() { override def run() = { // val snapShot = chart.snapshot(null) // val snapShot = scene.snapshot(null) val snapShot = pane.snapshot(null,null) ImageIO.write(SwingFXUtils.fromFXImage(snapShot, null), […]

JavaFX关键监听器为多个键按下实现?

我想创建一个事件处理程序来侦听多个键组合,例如同时按住Ctrl和C. 为什么if((… == Control) && (… == C))不起作用? 这是我尝试使用的代码: textField.addEventHandler(KeyEvent.KEY_PRESSED, new EventHandler() { public void handle(KeyEvent event) { if ((event.getCode() == KeyCode.CONTROL) && (event.getCode() == KeyCode.C)) { System.out.println(“Control pressed”); } }; });

如何在javaFX中右键单击窗格或ImageView时显示上下文菜单

我正在尝试显示我创建的上下文菜单,当我右键单击窗格或图像视图时((在上下文菜单请求中))。 问题是它们似乎没有setContextMenue方法,不像标签和按钮……等。 如何将上下文菜单关联到似乎不接受上下文菜单的节点? @FXML Button button1, button2; @FXML Pane mainPane; @FXML ImageView image; private void initContextMenu() { final ContextMenu contextMenu = new ContextMenu(); final MenuItem item1 = new MenuItem(“open a file”); final MenuItem item2 = new MenuItem(“quit”); contextMenu.getItems().addAll(item1, item2); // not possible image.setContextMenu(contextMenu); // possible button1.setContextMenu(contextMenu)

如何在JavaFx中创建通用TableView?

我正在为我的项目构建一个GUI,我需要显示来自各种类型的数据结构的信息:表中的ArrayList,HashMap,TreeSet。 基本上我需要显示我在视图包中的模型包中获得的查询方法的信息。 我的实现现在包括一个控制器,用于我每次声明TableView时使用指定的对象类型构建的每个表。 我想知道是否有一种方法来创建一个类,它的构造函数将构建我需要的表(具有此对象所需的列数)。 某种通用表构建器,可以读取对象并找出需要表示的列数。 例如:提供具有4个字段/列的Reservation对象与具有6个字段/列的Member对象进行比较。 根据它将得到的数据结构。 因此,我将能够创建此类的实例并实例化我需要的表并在屏幕上显示它。 我还需要一种能够从场景构建器控制它的方法,因为这是我用于以图形方式构建GUI的主要工具。 我在这里添加了一个表格代码,希望有人可以帮我完成这个繁琐的任务:) package view; import java.util.ArrayList; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.control.TextField; import javafx.stage.Stage; import model.Reservation; public class QRYClientReservationsTableController { private ObservableList ReservationsData = FXCollections.observableArrayList(); @FXML private TableView ReservationforClient; @FXML private TableColumn ReservationIdColumn; @FXML private TableColumn LocationIdColumn; […]

有没有办法在JavaFX LineChart中断开2个串联串?

我在LineChart上有四个系列。 每个系列都包含一些时间分割的图形。 默认情况下,LineChart会连接这些图形。 它看起来很丑,在上下文中没有任何意义,所以我想将它们分开,但保留颜色和图例。 换句话说,我想要的是删除两个特定点之间的连接。 有没有办法在不借助向图表中添加新系列的情况下执行此操作(图形是逻辑连接的,添加新系列会让用户感到困惑并使图表混乱)? for(int j = 0; j < 4; j++) { XYChart.Series series = new XYChart.Series(); series.setName(“Канал ” + (j + 1)); fillWithData(series); chart.getData().add(series); }

JavaFX奇怪的菜单加速器行为

我注意到JavaFX(系统)菜单上的菜单加速器有一个非常奇怪的行为。 某些组合键根本不起作用,而其他键组合则被解释为错误键。 例如,当您使用CMD + CLEAR键作为加速器时,它将作为CMD + Page Down down键(在菜单文本和对键盘事件的实际响应中)进行更改。 ‘ – ‘(MINUS)键完全不能正常工作,而CMD + – 在菜单中显示良好,按键时永远不会触发。 另一方面,当您添加ALT键(即,按CMD + ALT + – )时,CMD事件会被触发(但不会触发CMD + ALT + – 1)。 知道发生了什么,或者这是一个(知道)错误? 我创建了以下示例程序来说明这一点。 注意:我在Mac上。 package menuaccelerator; import javafx.application.Application; import javafx.event.ActionEvent; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.Menu; import javafx.scene.control.MenuBar; import javafx.scene.control.MenuItem; import javafx.scene.control.TextArea; import javafx.scene.input.KeyCombination; import javafx.scene.layout.StackPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; […]