Tag: javafx

JavaFX软件devise

在JavaFX应用程序中,必须将javafx.application.Application分类,并且必须从此派生类中调用inheritance的launch()方法(尽pipe它是公共的),否则会引发exception。 launch()方法然后使用reflection来实例化派生类,使得在启动时难以为类成员设置值而不会丢失它们。 所有这一切对我来说都是不寻常的,我想知道为什么启动一个JavaFX应用程序是如此复杂,如果这种软件devise(devise模式?)有一个名称,或者它只是糟糕的devise? 编辑: 更具体地说,我想使用观察者模式,所以我的Java应用程序在文档加载时得到通知,如下所示: public class MyDocumentLoader extends Application { private ChangeListener<Worker.State> changeListener; public void setChangeListener(ChangeListener<Worker.State> changeListener) { this.changeListener = changeListener; } … public void loadDocument(String url) { webEngine.getLoadWorker().stateProperty().addListener(changeListener); webEngine.load(url); } … } 我需要在几个方法中的callback成员,理想情况下,我可以有多个加载文档的类的实例,所以我可以为不同的URL设置不同的ChangeListeners。

检查形状与JavaFX的碰撞

我正在尝试做一些碰撞检测。 对于这个testing,我使用简单的矩形Shape ,并检查它们的Bound ,来判断它们是否相互碰撞。 虽然检测不能按预期工作。 我试图用不同的方式来移动对象(relocate,setLayoutX,Y)和不同的绑定检查(boundsInLocal,boundsInParrent等),但我仍然无法得到这个工作。 正如你所看到的,检测只适用于一个对象,即使你有三个对象只有一个检测到碰撞。 这是一些演示问题的工作代码: import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Cursor; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.input.MouseEvent; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import java.util.ArrayList; public class CollisionTester extends Application { private ArrayList<Rectangle> rectangleArrayList; public static void main(String[] args) { launch(args); } public void start(Stage primaryStage) { primaryStage.setTitle("The test"); Group root = […]

JAVAFX:位置没有设置错误

我的项目在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文件和控制器放在同一个包里。

如何embedded.ttf字体是JavaFx 2.2?

首先,在编码方面我是一个新手。 我需要在基于javaFXML的应用程序中embedded字体,不知道该怎么做。 我已将字体fontName.ttf粘贴到我的项目源的根目录(即App/src/app/resources的“resources”文件夹中。 我已经将组件(文本)的CSS设置为 #text { -fx-font-family: url(resources/fontName.ttf); } 我也尝试在URL中添加引号,例如url("resources/fontName.ttf"); ,但它不起作用。 我也设置组件的CSS ID,所以不能是问题。 有没有其他工作方式可以这样做? 我已经看到http://fxexperience.com/2010/05/how-to-embed-fonts/ ,但它不工作,因为我有jdk 1.7 u21。 任何想法正确的方式来embedded字体?

突出显示JavaFX TextArea中的string

我们在我们的应用程序中使用了JavaFX的TextArea控件,并试图将其与Jazzy Spell Check API集成 – 就像当用户input一个不在字典中的错误单词时,这样的单词将被突出显示。 有没有办法在所说的控件中突出显示一个单词? 我没有看到在JavaDocs中的select,所以如果有人可以提出一个办法? 我猜可以使用HTMLEditor组件,并用<font face="red=>wrongWord</font>不同的单词,但是这会给拼写检查带来很多不同的问题,例如作为html标签和单词计数。

如何在资源文件夹中引用javafx fxml文件?

我正在创build一个javafx GUI应用程序,我的项目是一个mavenconfiguration项目。 我想能够在我的控制器中像这样引用我的fxml文件: FXMLLoader.load(getClass().getResource("main.fxml"); 我的main.fxml文件位于src / main / resources文件夹中,而我的控制器位于src / main / java文件夹中。 我怎么去做这个? 我的src / main / resources文件夹位于构buildpath中,我可以从src / main / java文件夹中的类中调用src / main / resources文件夹中的.properties文件。 编辑 我试图将fxml文件放在主资源文件夹的相应目录中: 但我仍然有一个错误。

如何计算JavaFX中string的像素宽度?

看起来没有API调用来计算Java FX 2.2中文本string的宽度(以像素为单位)。 有其他论坛的解决方法的build议,但我的努力创build或查找任何代码,返回一个string的宽度,使用默认的字体或其他,都失败了。 任何帮助,将不胜感激。

JavaFX和OpenJDK

我试图决定是否可以切换到JavaFX的Java应用程序的用户界面。 我的大多数用户将使用现在已经集成了JavaFX的Oracle JRE。 但是,有些正在使用OpenJDK(在Linux上)。 这个 (老)的问题表明,OpenJDK与JavaFX交易非常糟糕。 根据这个问题,OpenJFX的替代版本只能在版本9中完全集成到OpenJDK中。所以我的问题是双重的: OpenJDK中的JavaFX支持仍然如此糟糕? 如果是这样,是否有任何已经提供OpenJFX软件包的Linux发行版,用户不必自行构build它 ?

JavaFX 2.1 TableView刷新项目

我有这个共同的问题,因为它似乎是。 我重置他们后,我的表格视图不会刷新我的项目。 我已经检查了数据,这是新的。 我尝试了互联网的多种解决scheme,但没有成功 无法重置所有的列,因为它增加了一个空的额外(不知道为什么)和resize刚刚打破。 我的表是不可编辑的 。 新数据已更改。 如果更改项目的顺序并更改行(:|),数据将刷新。 我只是没有想法而离开。 目前刷新代码非常简单。 ObservableList<User> data = FXCollections.observableArrayList(User.getResellers()); reseller_table.setItems(data); 新的数据也是正确的。 当我对tableView进行select时,它会返回新的正确的Item。

JavaFX – 用于SQL查询的后台线程

我想知道是否有人可以帮助我一个相当烦人的问题,在JavaFX中创build一个后台线程! 我目前有几个SQL查询将数据添加到当前在JavaFX应用程序线程上运行的UI(请参阅下面的示例)。 但是,当执行每个查询时,都会冻结UI,因为它不在后台线程上运行。 我查看了使用Task的各种示例并理解了它们,但在执行数据库查询时无法让它们工作,其中一些需要几秒钟才能运行。 这是执行查询的方法之一: public void getTopOrders() { customerOrders.clear(); try { Connection con = DriverManager.getConnection(connectionUrl); //Get all records from table String SQL = "EXEC dbo.Get_Top_5_Customers_week"; ResultSet rs; try (Statement stmt = con.createStatement();) { rs = stmt.executeQuery(SQL); while (rs.next()) { double orderValue = Double.parseDouble(rs.getString(3)); customerOrders.add(new CustomerOrders(rs.getString(1), rs.getString(2), "£" + formatter.format(orderValue), rs.getString(4).substring(6, 8) + "/" + […]