gpt4 book ai didi

java - 无法将文本添加到 RichTextFX 中的 InlineCssTextArea

转载 作者:行者123 更新时间:2023-12-02 00:59:25 32 4
gpt4 key购买 nike

我刚开始在 JAVAFX 项目中使用 RichTextFX。但我发现我无法将文本添加到 InlineCssTextArea 中。在项目中,我使用了 MVC 设计并从场景生成器生成 UI 代码。 InlineCssTextArea创建成功,但不知道为什么无法添加文本内容。程序编译成功,没有错误。但是InlineCssTextArea默认为空。

我已经在 Github 上阅读了 RichTextFX 的官方演示,但他们纯粹通过代码而不是通过 Scene Builder 构建 UI。

需要发布“胖”版本的库:https://github.com/FXMisc/RichTextFX

谢谢

Tree structure


> ├───library
> │ richtextfx-fat-0.10.2.jar
> │
> │
> └───src
> Main.fxml
> Main.java
> specialController.java

Main.fxml:

<?xml version="1.0" encoding="UTF-8"?>

<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.SeparatorMenuItem?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<?import org.fxmisc.richtext.InlineCssTextArea?>

<VBox prefHeight="400.0" prefWidth="640.0" xmlns="http://javafx.com/javafx/8.0.171" xmlns:fx="http://javafx.com/fxml/1" fx:controller="specialController">
<children>
<AnchorPane maxHeight="-1.0" maxWidth="-1.0" prefHeight="-1.0" prefWidth="-1.0" VBox.vgrow="ALWAYS">
<children>
<InlineCssTextArea fx:id="specialArea" layoutX="14.0" layoutY="14.0" prefHeight="346.0" prefWidth="611.0" />
</children>
</AnchorPane>
</children>
</VBox>

Main.java

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;

public class Main extends Application {
private static final String indexFXMLFileName="Main.fxml";
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
Parent index= FXMLLoader.load(getClass().getResource(indexFXMLFileName));
primaryStage.setTitle("Writing Assitant Index");
primaryStage.setResizable(false);
primaryStage.setScene(new Scene(index));
primaryStage.show();
}
}

specialController.java

import javafx.fxml.FXML;
import org.fxmisc.richtext.InlineCssTextArea;

public class specialController{
@FXML
public InlineCssTextArea specialArea;

public specialController() {
String alphabet = "Remember when you were a careless eight year old kid riding a bike with your friends, racing each other around the neighborhood? ";
specialArea = new InlineCssTextArea(alphabet);
}
}

最佳答案

我终于找到了解决办法。将 specialController.java 更改为此。感谢@kleopatra。除了kleopatra提到的重新实例化的问题外,主要的问题是我没有意识到initializeconstructor之间的区别,因此我尝试在控件的初始化,这导致了 nullPointerException。 StackOverflow 上已经有一些有关这两者之间差异的答案。

import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Label;
import javafx.scene.layout.AnchorPane;
import org.fxmisc.richtext.InlineCssTextArea;

import java.net.URL;
import java.util.ResourceBundle;

public class specialController implements Initializable {

public InlineCssTextArea specialArea;

public specialController() {
}

@Override
public void initialize(URL location, ResourceBundle resources) {
String alphabet = "Remember when you were a careless eight year old kid riding a bike with your friends, racing each other around the neighborhood? ";
specialArea.deleteText(0,specialArea.getLength());
specialArea.appendText(alphabet);
specialArea.setPrefWidth(400);
specialArea.setPrefHeight(600);
}
}

关于java - 无法将文本添加到 RichTextFX 中的 InlineCssTextArea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57782203/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com