我需要检测双击TableView的一行。 我怎样才能听到在行的任何部分双击,并获得该行的所有数据打印到控制台?
我有一个JavaFX应用程序,当按下Xbutton时最小化托盘。 我一直在通过VisualVM监视应用程序的内存趋势。 怪异的部分是,当应用程序打开或最小化到任务栏时,内存总是回到使用的初始内存。 但是,当它最小化到托盘( stage.hide() , stage.hide() )时,内存得到GCed,但处于上升趋势(泄漏)。 在VisualVM中,旧版空间不断增加,一旦达到最大值,应用程序将无响应,CPU高达80%。 我注意到, 如果我通过双击托盘图标等stage.show()应用程序,GC将清除一切恢复正常 。 但是,如果长时间离开,那么根本就不会GC老一辈。 堆转储显示javafx.scene.Scene#7和javafx.scene.Node[]#2具有最多的保留空间。 如果舞台没有隐藏,两者都不会出现。 在引用下,它显示了this[] -> dirtyNodes() 。 this – value: javafx.scene.Node[] #2 <- dirtyNodes – class: javafx.scene.Scene, value: javafx.scene.Node[] #2 <- value – class: javafx.scene.Node$ReadOnlyObjectWrapperManualFire, value: javafx.scene.Scene #7 是什么原因造成的,我该如何解决?
在Swing中,当窗口closures时,只需使用setDefaultCloseOperation()closures整个应用程序即可。 但是在JavaFX中,我找不到一个等价的东西。 我打开了多个窗口,如果窗口closures,我想closures整个应用程序。 在JavaFX中如何做到这一点? 编辑: 我明白,我可以重写setOnCloseRequest()在窗口closures执行一些操作。 问题是应该执行什么操作来终止整个应用程序? stage.setOnCloseRequest(new EventHandler<WindowEvent>() { @Override public void handle(WindowEvent event) { stop(); } }); Application类中定义的stop()方法什么也不做。
我想从我的控制器类处理舞台事件(即隐藏)。 所以我所要做的就是添加一个监听器 ((Stage)myPane.getScene().getWindow()).setOn*whatIwant*(…); 但问题是,初始化之后就开始了 Parent root = FXMLLoader.load(getClass().getResource("MyGui.fxml")); 和之前 Scene scene = new Scene(root); stage.setScene(scene); 因此.getScene()返回null。 我自己发现的唯一的解决方法是添加一个监听器myPane.sceneProperty(),当它变得不为空,我得到场景,添加到它的.windowProperty()我!该死的! 监听器处理,我终于检索阶段。 而这一切都以设置所需的听众到舞台事件结束。 我觉得听众太多了。 这是解决我的问题的唯一方法吗?
我试图find难以捉摸的JavaFX场景生成器,所以我可以在Intellij中使用它。 我在Windows操作系统上。 甲骨文表示,JavaFX场景生成器包含在一个新的下载中,但无论我如何search,我都找不到它(请参阅http://www.oracle.com/technetwork/java/javafx/downloads/index.html )。 我认为他们已经链接到不正确的页面和谷歌search,因为它让我无处可去。 我已经安装了Java 8 SDK并且工作正常。 显然JavaFX现在已经包含在内了,但是在Java文件夹中没有任何地方可以find场景构build器,它似乎完全没有在线。 请任何人都可以帮忙? 我只是想编写一个小的GUI程序,看起来像JavaFX是要走的路(如果它不是那么随意地消除我这个概念!)
是否可以使用JavaFX更改应用程序图标,还是必须使用Swing完成?
我在互联网上看到添加一行到TableView的例子,例如在Oracle文档中使用Person类。 但是我有一个可变数量的列,所以我不能绑定到一个Person(或任何其他)的bean业务对象。 Oracle示例继续展示如何将列绑定到属性名称,但为此,它只显示如何添加列,但不显示行。 我的问题是,有人可以指向一个dynamic添加任意列和/或行到JavaFX 8 TableView的Hello,World示例吗?
是否有任何简单的方法让TreeTableView(或TableView)尝试提交焦点上的值丢失? 不幸的是,我没有成功实现任何javafx TableCellFactories的默认实现,这就是为什么我尝试了我自己的TreeTableCell实现,还有一些不同的TableCell实现,比如Graham Smith ,它似乎是最直接的,因为它已经实现了一个钩子焦点丢失了,但是这个值永远不会被提交,并且用户改变被重置为原始值。 我的猜测是,每当焦点丢失时,受影响Cell的editingProperty总是已经为false,导致Cell从不在focusLost上提交一个值。 这里从原来的(oracle-)TreeTableCell实现(8u20ea)的相关部分,这导致我的方法失败: @Override public void commitEdit(T newValue) { if (! isEditing()) return; // <– here my approaches are blocked, because on focus lost its not editing anymore. final TreeTableView<S> table = getTreeTableView(); if (table != null) { @SuppressWarnings("unchecked") TreeTablePosition<S,T> editingCell = (TreeTablePosition<S,T>) table.getEditingCell(); // Inform the TableView of the edit […]
我写了一段代码,让字母出现,然后飞行。 这个问题消耗了大量的内存。 我已经优化了一点点 共享path对象并更新侦听器中的参数。 每次打印新的字母时调用gc 但它仍然使用了大量的内存,所以有关如何减less内存使用的想法? 提前致谢。 package sample; import javafx.animation.PathTransition; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import javafx.scene.shape.LineTo; import javafx.scene.shape.MoveTo; import javafx.scene.shape.Path; import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.stage.Stage; import javafx.util.Duration; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) throws Exception { […]
我的项目在eclipse中正常运行,但是当我创build这个项目的jar文件并试图通过cmd运行它显示“位置未设置”错误。 我的项目结构是: 方法是(在eclipse中运行): @FXML private void RegularCustomer(ActionEvent event) throws Exception{ Stage stage = (Stage) dailySales.getScene().getWindow(); Scene scene = dailySales.getScene(); FXMLLoader loader = new FXMLLoader(getClass().getResource("../customer/CustomerHome.fxml")); System.out.println(loader.getLocation()); scene.setRoot(loader.load()); stage.setScene(scene); stage.show(); } 这段代码有什么问题? 有一些相对的问题,但它们不同。 他们的代码没有在IDE中运行,但是我的代码在IDE中运行。 参考:我做了一些文件夹结构的变化,并能够成功运行。 但是这个结构太可怕了,因为我把所有的FXML文件和控制器放在同一个包里。