Tag: javafx 8

JavaFX如何将新的FXML内容注入当前场景

我有一个应用程序,其中包含带标题和菜单的HomeScene.fxml文件。 HomeScene还有dashboardPane,应该在按下菜单按钮后动态更改。 仪表板窗格内容应该从另一个fxml文件加载,例如’FinancesPane.fxml’或’SettingsPane.fxml’。 我试图在HomeController中替换dashboardPane的内容: @FXML public void handleFinancesButtonAction() { FinancesPaneFactory paneFactory = new FinancesPaneFactory(); dashBoardPane.getChildren().clear(); dashBoardPane.getChildren().add(paneFactory.createPane()); } 我的FinancesPaneFactory看起来像这样: public class FinancesPaneFactory extends PaneFactory { private static final String PANE_TEMPLATE_PATH = “/sceneTemplates/FinancesPane.fxml”; public FinancesPaneFactory() { super(PANE_TEMPLATE_PATH ); } @Override protected Pane generatePane(FXMLLoader loader) { try { return (Pane) loader.load(); } catch (IOException e) { throw new […]

JavaFX 8工具提示删除了舞台的透明度

我很难搞清楚为什么我的透明舞台拒绝透明。 最后我发现,它是由安装到ImageView的Tooltip引起的: ImageView imageViewIcon = new ImageView(); imageViewIcon.setFitWidth(70); imageViewIcon.setFitHeight(70); imageViewIcon.setPreserveRatio(false); imageViewIcon.setImage(new Image(“./next.png”)); Tooltip tooltip = new Tooltip(“Tooltip!”); if (this.config.getShowTooltip(“true”)) { Tooltip.install(imageViewIcon, tooltip); } 当我注释掉最后4行时,透明度按预期工作,但安装了Tooltip ,舞台背景呈灰色(例如默认窗口背景)。 虽然显而易见的是按钮的作用以及工具提示对我的布局来说并不是必不可少的,但这样做会很好,只是给一点提示…… 有任何建议或解决方法吗?

Java 8 DatePicker和可编辑的ComboBox行为在8u51和8u60之间变化

我们已经广泛搜索了这个论坛和网站,但没有发现任何与此问题有关的内容,所以我觉得有必要在这里发布这个问题… 我们观察到Java 8 u51和u60版本之间JavaFX8 DatePicker和可编辑ComboBox元素的function方面的主要行为变化。 在u51下运行,您可以在DatePicker和tab中输入日期(例如12/30/1970)到下一个UI元素,数据将自动保存,如果日期绑定到年龄计算TextField,则年龄将更新。 可编辑的ComboBox元素也是如此。 但是在u60下运行时,用户必须在DatePicker或可编辑ComboBox上更改数据后按ENTER键 ,否则数据不会保存。 在UI元素外部切换到下一个UI元素或鼠标单击,数据将丢失,取而代之前在编辑之前保存在该元素中的内容。 所以我的问题是,是否还有其他人注意到这种关键的行为改变,如果是这样的话,我觉得这是u60中的一个错误或Oracle出于某种原因故意采取的方向? 最后有一个解决方法,也许是以事件处理程序的forms,可以在失去这些元素的焦点之前模拟“ENTER”键按下? 提前感谢您的考虑。

为javafx textField添加最多2位小数的侦听器

我想将javaFX文本字段设置为两位小数。 我找到了答案,但它是数值。 例如 // force the field to be numeric only textField.textProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, String oldValue, String newValue) { if (!newValue.matches(“\\d*”)) { textField.setText(newValue.replaceAll(“[^\\d]”, “”)); } } }); 在上面的代码中,什么是最多两位小数的限制值的替换。 或者是否有任何其他解决方案来限制textField。 我有绑定TextField这是我的部分代码… @FXML public TextField InvoiceTotal; private DoubleProperty invTotal; invTotal = new SimpleDoubleProperty(0); netAmount.bind(grossAmount.subtract(disc)); StringConverter converter= new DoubleStringConverter(); Bindings.bindBidirectional(InvoiceTotal.textProperty(),invTotal,(StringConverter)converter); 现在我想在InvoiceTotal文本字段上设置两个小数限制

JavaFX 8对话框内部元素的本地化

我目前正在开发一个带有斯洛伐克语本地化的JavaFX应用程序,在应用程序内部,我使用Alert对话框显示可扩展内容窗格的exception,如下图所示: 我想完全翻译这个对话框,这与Header , Title或Content Header ,但我找不到如何翻译可扩展区域的Show/Hide details标签的方法。 所以我的问题可以有点概括:如何更改/翻译JavaFX内部元素的文本? 在此先感谢您的帮助。 PS:为了创建exception的Alert对话框,我使用code.makery.ch上的代码

从JavaFX开始 – JavaFX版本和“开发模式”问题

我正计划开始开发桌面应用程序,但直到现在,对我来说,desktop = swing。 我做了一些关于它的研究,发现自己有些问题: 我发现有很多JavaFX版本: 人们说JavaFX 1.0已经陈旧过时了; JavaFX 2.X非常好; 而现在JavaFX 8(这是正确的吗?); 但即使最新的NetBeans IDE版本(8.0)与JDK 8(1.8.0),当我创建JavaFX应用程序时,它开始使用JavaFX 2.2 – JavaFX 8是否真的是一个新的JavaFX版本或人们说它只是因为他们使用JavaFX 2.X与JDK 8? 关于版本的另一个问题,在JavaFX版本X中开发的应用程序是否与更高版本兼容? 就像一个swing应用程序,如果你用Java 5开发了一个应用程序,它甚至可以在Java 8上运行。 关于开发模式,更具体地说是关于布局创建,我注意到有两种方法可以创建布局:只需用Java编写代码,然后用Java类作为控制器创建XML文件(FXML)(更多MVC方法)就像一个JSF应用程序。 我应该选择哪一个? 每个人的利弊是什么?

FXML加载exception

我遇到了一个我自己无法解决的问题,因为我刚刚开始使用JAVA FX。 我得到一个令人讨厌的javafx.fxml.LoadException :,但我完全像一个向导,但我不能让我的Main运行。 这是exception输出: apr 07, 2014 4:06:37 EM application.Main start ALLVARLIG: null javafx.fxml.LoadException: /C:/Users/Jakob/Dropbox/java_kurser/Project%20Timeline/bin/application/LoginGUI.fxml at javafx.fxml.FXMLLoader.constructLoadException(Unknown Source) at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) at javafx.fxml.FXMLLoader.loadImpl(Unknown Source) at javafx.fxml.FXMLLoader.load(Unknown Source) at application.Main.start(Main.java:21) at com.sun.javafx.application.LauncherImpl$8.run(Unknown Source) at com.sun.javafx.application.PlatformImpl$7.run(Unknown Source) at com.sun.javafx.application.PlatformImpl$6$1.run(Unknown Source) at […]

FXMLLoader如何加载FXML的控制器?

当我在JavaFX中调用FXMLLoader#load()时会发生什么? 假设FXML控制器扩展了一个具有构造函数的类。 是否可以保证将调用构造函数? 如果没有,将如何创建对象的新实例? 例如,在下面的代码中,是否会调用TextField()构造函数? import java.net.URL; import java.util.ResourceBundle; import javafx.fxml.Initializable; import javafx.scene.control.TextField; public class FXMLController extends TextField implements Initializable { @Override public void initialize(URL url, ResourceBundle rb) { } } 我已经尝试过搜索这个,但除了“从FXML文档加载对象层次结构”之外,似乎没有关于它的文档。 来自http://docs.oracle.com/javafx/2/api/javafx/fxml/FXMLLoader.html 您的回答将不胜感激。 非常感谢!

如何在JavaFX中获取舞台的窗口句柄(hWnd)?

我们正在Windows中构建JavaFX应用程序,我们希望能够做一些事情来操纵我们的应用程序在Windows 7/8任务栏中的显示方式。 这需要修改名为“ 应用程序用户模型ID ”的Windows变量。 我们已经通过使用JNA设法完成了我们想要的Swing,我们想在JavaFX中重复我们的解决方案。 不幸的是,要做到这一点,我们需要能够为我们的应用程序中的每个窗口检索hWnd (窗口句柄)。 这可以通过JNA Native.getWindowPointer()方法在Swing / AWT中完成,该方法适用于java.awt.Window ,但我无法找到一个使用javafx.stage.Window执行此操作的好方法。 有没有人知道有什么方法可以获得hWnd Stage ?

JavaFX ObservableList的回调和提取器

这是代码: package sample; import javafx.beans.Observable; import javafx.beans.property.IntegerProperty; import javafx.beans.property.SimpleIntegerProperty; import javafx.collections.FXCollections; import javafx.collections.ListChangeListener; import javafx.collections.ObservableList; import javafx.util.Callback; import java.util.List; /** * Created by IDEA on 28/07/15. */ public class ListUpdateTest { public static void main(String[] args) { Callback extractor = (IntegerProperty p) -> { System.out.println(“The extractor is called.”); Observable[] res = new Observable[]{p}; System.out.println(“Result from […]