Tag: javafx

我可以为kotlin桌面应用程序使用@autowire(spring-context)吗?

我试图使用Spring DI为kotlin-javafx桌面应用程序,但是Spring并没有将bean注入到lateinit属性中。 这是我的初学者class package ui @Component class Starter : Application() { override fun start(primaryStage: Stage?) { val root : Parent = FXMLLoader.load(javaClass.getResource(“/view/main.fxml”)) primaryStage?.title = “Title” primaryStage?.scene = Scene(root) primaryStage?.show() } companion object { @JvmStatic fun main(args: Array) { AnnotationConfigApplicationContext(SpringConfig::class.java) launch(Starter::class.java, *args) } } } 这是我的Spring-config类 package config @Configuration @ComponentScan(basePackages = arrayOf(“domain”, “ui”)) open class SpringConfig […]

当我将它导出到可运行jar文件时,kotlin出现Javafx错误

我尝试使用kotlin编写javafx应用程序。 在将它导出到可运行jar之后,我双击jar文件,但是它不起作用。 但是,如果我使用Java,一切都可以。 例如:通过IDEA 2017.2.5创建一个新的javafx项目。选择File-Project Structure,然后点击JavaFX标签,Native bundle选择all。然后应用设置。 在这里输入图像说明 然后选择Build-Build Artifact-Build。 在这里输入图像说明 我可以运行它。一切都好。 在这里输入图像说明 但是当我使用kotlin并且做和java一样的事情时。 当我在IDEA中运行它时,一切正常。 码: package sample import javafx.application.Application import javafx.fxml.FXMLLoader import javafx.scene.Parent import javafx.scene.Scene import javafx.stage.Stage class Main : Application() { @Throws(Exception::class) override fun start(primaryStage: Stage) { val root = FXMLLoader.load(javaClass.getResource(“sample.fxml”)) primaryStage.title = “Hello World” primaryStage.scene = Scene(root, 300.0, 275.0) primaryStage.show() } companion […]

使用Kotlin时,FXML控件始终为空

使用IntelliJ我创建了一个JavaFX应用程序,然后将Kotlin和Maven作为框架添加到它。 它带有一个sample.fxml文件和一个Controller.java和Main.java。 我在Kotlin(MainWindowController.kt)中为控制器创建了一个新类,并将sample.fxml文件重命名为MainWindow.fxml。 我更新了MainWindow.fxml,如下所示: 在我的MainWindowController.kt文件中,我有: package reader import javafx.fxml.FXML import javafx.scene.control.Label class MainWindowController { @FXML var helloLabel: Label? = null init { println(“Label is null? ${helloLabel == null}”) } } 这是我的Main.java: import javafx.stage.Stage; public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception{ Parent root = FXMLLoader.load(getClass().getClassLoader().getResource(“MainWindow.fxml”)); primaryStage.setTitle(“My App”); primaryStage.setScene(new Scene(root, 1000, […]

无法运行JavaFX – Kotlin应用程序

我无法运行我的javafx – kotlin应用程序。 我的入门级 class Starter : Application() { override fun start(primaryStage: Stage?) { val root : Parent = FXMLLoader.load(javaClass.getResource(“view/main.fxml”)) primaryStage?.title = “Title” primaryStage?.scene = Scene(root) primaryStage?.show() } fun main(args: Array) { launch(args) } } 我不能将参数“参数”传递给“启动”方法,因为编译器说: 错误:(19,9)Kotlin:以下函数都不能用所提供的参数调用:public open fun launch(p0:Class !, vararg p1:String!):javafx.application.Application中定义的单位public open fun启动(vararg p0:String!):在javafx.application.Application中定义的单位 如果我试图调用“启动”方法没有参数我有以下例外 exception在线程“main”java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl .java:43)at sun.launcher.LauncherHelper […]

科特林。 基本的JavaFX应用程序

尝试Kotlin朗,我有一个印象,它与Java兼容,因此与JavaFX,我试着下面: public object TestKt: Application() { public override fun start(stage: Stage){ val pane= Pane() val scene=Scene(pane,200.0,200.0) stage.scene = scene stage.show() } @JvmStatic public fun main(args: Array){ launch() } } 这与Java的基本相同 public class Test extends Application { @Override public void start(Stage stage) { Pane pane=new Pane(); Scene scene=new Scene(pane, 200,200); stage.setScene(scene); stage.show(); } public static void […]

TornadoFX:类型安全的CSS与其他库

我是Kolin和TornadoFX的新手,我正在尝试一些功能。 我想使用JFoenix-Library,并使用TornadoFX的类型安全的CSS功能来设置其控件的样式。 但是我不知道如何修改给定JFoenix控件的CSS类的样式。 例如, JFXDecorator具有默认的CSS类jfx-decorator 。 要改变标题栏的背景颜色,我必须修改类jfx-decorator-buttons-container 。 我怎样才能做到这一点与TornadoFX? 在.css文件中,我只是使用 .jfx-decorator-buttons-container { -fx-background-color: red; } 这可能与TornadoFX?

TornadoFX – 创建一个MVP设计

你好我是使用TornadoFX的新手,我想知道MVP结构的最佳设计是使用TornadoFX吗? 在MVP看来: – >会将所有事件委托给演示者中的某个功能,例如按钮点击 – >不与模型交互 以下是一些粗糙的原型想法: abstract class AbstractPresenter<View : tornadofx.View> : Controller() { var view: View by Delegates.notNull() fun attachView(view: View) { this.view = view; } } 我创建一个自己附加到AbstractView的演示者: abstract class AbstractView<out Presenter : AbstractPresenter<*>> : View() { abstract val presenter: Presenter } 现在在一个例子中使用它: class SampleTestView: AbstractView<SampleTestPresenter>() { override val presenter: SampleTestPresenter by inject() […]

TornadoFX:标签文字没有更新

我目前遇到的问题之一是我似乎无法更改在动态加载的AnchorPane实现的Label的文本。 我认为这可能与控制器和JavaFX / TornadoFX的工作有关,但我似乎无法找到我做错了什么。 问题本身发生在这个类中 ,发生在showSystemDetails()方法中。 我期望发生的是,按下侧边栏中的“系统详细信息”按钮,标签将更新到所需的值,但这不是由于某种原因而发生的。 请随时指出我做错了什么,或提供任何建设性的批评。 这个项目还在发展中,很多东西还是乱糟糟的。

Tornadofx Javafx – 如何重新加载视图/组件

所以它是一个基本的问题。 我想实现的是从另一个角度来看令人耳目一新的观点。 比方说,我有一个视图EmployeeTableView通过执行REST API调用显示员工的表格表示形式。 另一种观点,我有一个过滤器EmployeeFilterView,其中我有性别,工资范围,雇员类型等 我也有一个userContext对象,在其中存储用户首选项。 所以默认情况下可以说我已经存储了性别过滤器的值为Male,工资范围为ALL等。这个对象作为参数发送到EmployeeTableView。 当EmployeeTableView被加载时,我用userContext值做一个restAPI调用来获取员工详细信息。 所以这工作正常。 现在我将性别过滤器更改为女性,并在我的userContext中分配此值。 现在,如果我可以用userContext对象重新加载EmployeeTableView,restapi调用将获得更新的值。 但是我怎么能这样做呢? 如果你有,也建议更好的方法。

ControlsFX SpreadsheetView rowspan IndexOutOfBoundsException

我是JavaFX和ControlsFX的新手。 我正在尝试使用ControlsFX库创建一个非常基本的SpreadsheetView。 以下是填充和创建SpreadsheetView的函数: private fun spreadSheetFunc() : SpreadsheetView { val rowCount = 15 val columnCount = 10 val grid = GridBase(rowCount, columnCount) val rows = FXCollections.observableArrayList<ObservableList<SpreadsheetCell>>() var list = FXCollections.observableArrayList<SpreadsheetCell>() list.add(SpreadsheetCellType.STRING.createCell(0, 0, 1, 1, "row0-col0")) list.add(SpreadsheetCellType.STRING.createCell(0, 1, 2, 1, "row0-col1")) list.add(SpreadsheetCellType.STRING.createCell(0, 2, 1, 1, "row0-col2")) rows.add(list) list = FXCollections.observableArrayList() list.add(SpreadsheetCellType.STRING.createCell(1, 0, 1, 1, "row1-col0")) //commenting […]