IntelliJ I'yi kullanmak bir JavaFX uygulaması oluşturdu ve Kotlin ve Maven'i çerçeveye ekledi. Bir sample.fxml dosyası ve bir Controller.java ve Main.java ile geldi. Kotlin'deki (MainWindowController.kt) denetleyici için yeni bir sınıf oluşturdum ve main.findml dosyasını MainWindow.fxml olarak yeniden adlandırdım. BenFXML denetimi daima Kotlin'i kullanırken boştur null
<?import javafx.scene.control.Label?>
<?import javafx.scene.layout.GridPane?>
<GridPane fx:controller="reader.MainWindowController" xmlns:fx="http://javafx.com/fxml" xmlns="http://javafx.com/javafx/8" alignment="center" hgap="10" vgap="10">
<Label fx:id="helloLabel" text="Hello"/>
</GridPane>
Ve MainWindowController.kt dosyasında: Ben gibi görünmek MainWindow.fxml güncellenmiş
İştepackage reader
import javafx.fxml.FXML
import javafx.scene.control.Label
class MainWindowController {
@FXML var helloLabel: Label? = null
init {
println("Label is null? ${helloLabel == null}")
}
}
benim Main.java var:
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, 600));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
koşuyorum Uygulamada, yazdırma satırı etiketin boş olduğunu gösterir, ancak aksi takdirde pencere düzgün bir şekilde gösterir ve metni etiketimden görürüm. Null sahip olduğum problem. Ben Kotlin ile FXML kullanarak fazla bir şey bulamadım ve bulduğum şey biraz eskidi ve gerçek bir çalışma çözümüne sahip gibi görünmüyordu.
Etiketin neden boş olduğunu bilen var mı? Yanlış bir şey yapmalıyım ya da bir şeyi yanlış anlamalıyım.
Düzenleme: İşte şimdi hızlı yanıtlar sayesinde çalıştığını ne var:
package reader
import javafx.fxml.FXML
import javafx.scene.control.Label
class MainWindowController {
@FXML var helloLabel: Label? = null
fun initialize() {
println("Label is null? ${helloLabel == null}")
}
}
Ben KOTLIN bilmiyorum:
Kodunuz olabilir gibi görünüyor? –
[TornadoFX] 'a göz atmalısınız (https://github.com/edvin/tornadofx). Kotlin'de JavaFX'i gerçekten güzel kılıyor ve hem düzen hem de stil için güvenli tipte DSL'lere sahip. –
@ RuckusT-Boom'un yorumuna eklemek için, FXML'yi de destekler ve oldukça güzel bir şekilde düzenler. https://github.com/edvin/tornadofx-guide/blob/master/Part%202%20-%20Usage%20Basics/10.%20FXML.md – tmn