- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个主要的应用程序类和一个 fxmlController 类,但我纠结于连接/组织(困惑如何调用它们以及我应该如何组织它们以制作 GUI 连接的业务逻辑)业务逻辑和 GUI。有人可以告诉我调用以下函数的顺序,或者任何人都可以帮助我如何调用它们?
主要类:
public void Main() //constructor
public static void main() // our main
public void start() //I don't know what it is, what purpose it has
// and where should be called
//Note: In main function there is a call as following
public void initialize() //I don't know what it is and what purpose it has
public fxmlController() // which function should be called here....
FXMLLoader();
请有人解释一下
最佳答案
我认为 FXML 文件及其相应的 Controller 是管理用户界面的一对。在较大的应用程序中,您可能有几个这样的 FXML Controller 对,它们构成了用户界面的不同部分。在每一对中,FXML 文件定义了 UI 的布局,而 Controller 定义了逻辑(即它通常处理用户输入等)。
虽然你说你“知道 FXMLLoader
”,但如果你完全理解,你实际上会理解你问的其他一些事情,所以:
由 FXML 文件定义的用户界面及其 Controller 由 FXMLLoader
加载到内存中。 .在最简单的设置中, Controller 由 fx:controller
定义。 FXML 文件根元素中的属性。当load()
方法在 FXMLLoader
上被调用, 它:
fx:controller
指定的 Controller 类的实例属性,通过调用其无参数构造函数 @FXML
的值- 将 Controller 中的注释字段添加到使用匹配 fx:id
定义的元素中属性 initialize()
Controller 上的方法(如果有)。 @FXML
之前调用构造函数-注解字段被注入(inject),但
initialize()
方法在之后调用。这意味着您可以访问(和配置)和
@FXML
-
initialize()
中的注释字段方法,但不在构造函数中。在 Controller 类中不定义任何构造函数而只使用默认值是很常见的(至少在简单的应用程序中)。
FXMLLoader
将为您创建一个与您加载的 UI 元素相关联的新 Controller 实例。
Application
子类(您称之为
Main
)代表整个应用程序。每个应用程序应该只有一个这样的类和它的一个实例,它是由 FX 工具包为您创建的。
Application
的一个实例子类被创建,它的
init()
方法被调用(如果你没有定义一个,默认实现什么都不做)。然后启动 FX 应用程序线程和
Application
子类实例的
start()
在该线程上调用方法。
start()
方法应该做的工作很少。通常,它会加载您的“主”fxml 文件,将生成的 UI 放置在场景中,将场景放入舞台并显示舞台。所有逻辑将由 Controller 处理 FXML 文件,而不是由
Application
处理。子类。
init()
中启动一些后台服务和/或创建一些数据模型。方法,并将它们与
start()
中的 Controller 连接起来。方法,但上面的想法是基础。
Application
子类
java Main
Main extends Application
)将导致上述过程发生;换句话说,FX 工具包已启动,是
Main
的一个实例。已创建,其
init()
方法被调用,它是
start()
方法在 FX 应用程序线程上调用。
public static void main(String[] args)
方法,就像任何标准的 Java 应用程序类一样。为了支持这些环境,您的
Application
很常见。定义
main(...)
的子类简单调用
launch(...)
的方法(从
Application
继承的静态方法)。
launch
方法强制 FX 工具包启动等。它只能在任何应用程序生命周期内调用一次。
package com.example ;
// imports...
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
// just load fxml file and display it in the stage:
FXMLLoader loader = new FXMLLoader(getClass().getResource("mainUI.fxml"));
Parent root = loader.load();
Scene scene = new Scene(root);
primaryStage.setScene(scene);
primaryStage.show();
}
// main method to support non-JavaFX-aware environments:
public static void main(String[] args) {
// starts the FX toolkit, instantiates this class,
// and calls start(...) on the FX Application thread:
launch(args);
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.control.Label?>
<?import java.util.ArrayList?>
<VBox xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.example.MyController">
<Label fx:id="label1"/>
<Label fx:id="label2"/>
</VBox>
package com.example ;
// imports...
public class MyController {
@FXML
private Label label1 ;
@FXML
private Label label2 ;
// called by the FXML loader after the labels declared above are injected:
public void initialize() {
// do initialization and configuration work...
// trivial example, could also be done directly in the fxml:
label1.setText("Foo");
label2.setText("Bar");
}
}
关于java - 如何将 FX Controller 与主应用程序连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33881046/
我知道这个问题可能已经被问过,但我检查了所有这些,我认为我的情况有所不同(请友善)。所以我有两个数据集,第一个是测试数据集,第二个是我保存在数据框中的预测(预测值,这就是没有数据列的原因)。我想合并两
在 .loc 方法的帮助下,我根据同一数据框中另一列中的值来识别 Panda 数据框中某一列中的值。 下面给出了代码片段供您引用: var1 = output_df['Player'].loc[out
当我在 Windows 中使用 WinSCP 通过 Ubuntu 连接到 VMware 时,它提示: The server rejected SFTP connection, but it lis
我正在开发一个使用 xml web 服务的 android 应用程序。在 wi-fi 网络中连接时工作正常,但在 3G 网络中连接时失败(未找到 http 404)。 这不仅仅发生在设备中。为了进行测
我有一个XIB包含我的控件的文件,加载到 Interface Builder(Snow Leopard 上的 Xcode 4.0.2)中。 文件的所有者被设置为 someClassController
我在本地计算机上管理 MySQL 数据库,并通过运行以下程序通过 C 连接到它: #include #include #include int main(int argc, char** arg
我不知道为什么每次有人访问我网站上的页面时,都会打开一个与数据库的新连接。最终我到达了大约 300 并收到错误并且页面不再加载。我认为它应该工作的方式是,我将 maxIdle 设置为 30,这意味着
希望清理 NMEA GPS 中的 .txt 文件。我当前的代码如下。 deletes = ['$GPGGA', '$GPGSA', '$GPGSV', '$PSRF156', ] searchquer
我有一个 URL、一个用户名和一个密码。我想在 C# .Net WinForms 中建立 VPN 连接。 你能告诉我从哪里开始吗?任何第三方 API? 代码示例将受到高度赞赏... 最佳答案 您可以像
有没有更好的方法将字符串 vector 转换为字符 vector ,字符串之间的终止符为零。 因此,如果我有一个包含以下字符串的 vector "test","my","string",那么我想接收一
我正在编写一个库,它不断检查 android 设备的连接,并在设备连接、断开连接或互联网连接变慢时给出回调。 https://github.com/muddassir235/connection_ch
我的操作系统:Centos 7 + CLOUDLINUX 7.7当我尝试从服务器登录Mysql时 [root@server3 ~]# Mysql -u root -h localhost -P 330
我收到错误:Puma 发现此错误:无法打开到本地主机的 TCP 连接:9200(连接被拒绝 - 连接(2)用于“本地主机”端口 9200)(Faraday::ConnectionFailed)在我的
请给我一些解决以下错误的方法。 这是一个聊天应用....代码和错误如下:: conversations_controller.rb def create if Conversation.bet
我想将两个单元格中的数据连接到一个单元格中。我还想只组合那些具有相同 ID 的单元格。 任务 ID 名称 4355.2 参与者 4355.2 领袖 4462.1 在线 4462.1 快速 4597.1
我经常需要连接 TSQL 中的字段... 使用“+”运算符时 TSQL 强制您处理的两个问题是 Data Type Precedence和 NULL 值。 使用数据类型优先级,问题是转换错误。 1)
有没有在 iPad 或 iPhone 应用程序中使用 Facebook 连接。 这个想法是登录这个应用程序,然后能够看到我的哪些 facebook 用户也在使用该应用程序及其功能。 最佳答案 是的。
我在连接或打印字符串时遇到了一个奇怪的问题。我有一个 char * ,可以将其设置为字符串文字的几个值之一。 char *myStrLiteral = NULL; ... if(blah) myS
对于以下数据 - let $x := "Yahooooo !!!! Select one number - " let $y := 1 2 3 4 5 6 7 我想得到
我正在看 UDEMY for perl 的培训视频,但是视频不清晰,看起来有错误。 培训展示了如何使用以下示例连接 2 个字符串: #!usr/bin/perl print $str = "Hi";
我是一名优秀的程序员,十分优秀!