我正在尝试实现下面所示的基本JavaFX示例:http://docs.oracle.com/JavaFX/2/get_started/fxml_tutorial.htm。我能够让基本的东西工作(以编程方式创建gui)和使用css,但我遇到了FXMLLoader的问题。
java版本是这样的:
@Override
public void start(Stage stage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("fxml_example.fxml"));
stage.setTitle("FXML Welcome");
stage.setScene(new Scene(root, 300, 275));
stage.show();
}
我不是Java专家,但我不认为FXMLLoader对象是实例化的IE。没有new FXMLLoader();
语句。那么load
是从哪里来的呢?
null
(ns jfxtwo.core
(:gen-class
:extends javafx.application.Application)
(:import (javafx.application Application)
(javafx.fxml FXMLLoader)
(javafx.scene Parent Scene)
(javafx.stage Stage)))
(defn -main []
(javafx.application.Application/launch jfxtwo.core (into-array String [])))
(defn -start [this primaryStage]
(let [loc (clojure.java.io/resource "fxml_example.fxml")
root (.load FXMLLoader ^java.net.URL loc)
scene (Scene. root 300 250)]
(.setScene primaryStage scene)
(.show primaryStage)))
null
null
null
java中还有getClass()调用,我认为它正在获取Application的超类,但我不确定在Clojure-land中该如何处理它。
关于如何加载fxml文件有什么想法吗?
之后,java代码具有@FXML
注释,以允许FXML进入私有类成员。这在clojure(当我移除它时java代码中断)中是必要的吗?Clojure中似乎没有使用@override注释。
null
给定Java语法,这里调用的load
方法似乎是FXMLLoader
类的静态方法。要在Clojure中调用静态方法,需要使用(classname/methodname args...)
语法:
(FXMLLoader/load ...)
(刚刚选中:FXMLLoader
具有多个签名的静态方法和实例Load
方法。您希望调用Java代码所调用的方法;静态方法将使用Java中的FXMLLoader.Load
语法调用,实例方法--SomeFXMLLoaderInstance.Load
。)
对于getclass
方法调用,它的目标是在Java中隐式地this
;在Clojure中,必须使目标显式((.getClass this)
)。
奇怪的是,它在上次系统重启之前工作得很好。 这是我的项目。clj
我第一次尝试使用JavaFx与Maven。通过这个主题:链接IntelliJ不能识别JavaFX 11与OpenJDK 11,我配置的项目。但是无论我做什么,我都不能加载fxml文件,因为"getClass(). getResources(path)"返回null。 我更改了路径,以“/”开头,没有,更改了包,创建了包,删除了包,更改了模块信息中的引用,但这不起作用。 结构:https://ibb
为了给出基本的思想,下面是所涉及的代码的样子: 方法处理按钮操作,位于根布局控制器中: 它填充一个可观察的列表,该列表随后传递给第二个page控制器,以便在表视图中显示它们。显示此视图并设置每件事的方法如下:
Clojure/Leiningen/Eclipse(和Java)newby。我试图让Eclipse加载Clojure/Leiningen项目,但在搜索Lein插件解决方案时,我看到了令人困惑/矛盾的结果。 Eclipse IDE for Java开发者版本:Juno Service Release 2构建id:20130225-0426(Windows 8) 我在中有以下用户配置文件。lein\p
我试图在JavaFX中从一个控制器调用另一个控制器。我在我的代码的另一部分中以几乎完全相同的方式完成了这项工作,并且它起了作用,但出于某种原因,它在这里不起作用。 我正在获取FXML资源并加载它,但是当我调用能力信息ontroller.set能力名称文本(能力名称);它给我以下错误说能力信息控制器是NULL:
问题内容: 我只是在学习Angularjs,以及如何使用templateUrl加载模板。 我有一个简单的指令: 我尝试使用这样的指令: 打开页面后,出现以下异常: 我没有确定要跨域加载模板文件(te.html与default.html处于同一折叠)。 有人可以帮我弄清楚发生了什么吗? 问题答案: 问题是您正在使用文件协议(使用协议)运行示例,并且许多浏览器(Chrome,Opera)在使用协议时都