当前位置: 首页 > 知识库问答 >
问题:

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

谢哲瀚
2023-03-14

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

我已经在Github上阅读了RichTextFX的官方演示,但它们完全是从代码而不是场景生成器构建UI的。

库的“fat”版本要求:https://github.com/FXMisc/RichTextFX

非常感谢。

树状结构


> ├───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();
    }
}

特殊控制器。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);
    }
}

共有1个答案

董弘新
2023-03-14

我终于找到了解决方案。将专用Controller.java改成this。感谢@kleopatra。除了kleopatra提到的重新实例化的问题,主要问题是我没有意识到初始化构造函数之间的区别,因此我试图在控件初始化之前进行操作,这导致了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);
    }
}
 类似资料:
  • 下面的代码有问题: 此代码多次复制表的第一行,然后从复制值。工作非常好(除了文本样式),除了最后一个操作符,它应该改变一些添加的表格行中的文本。此外,“foobar”字符串甚至不会出现在创建的WORD文档的document.xml中。我没有从debug中看到任何线索,因为操作符似乎只是将指针复制到它的内部行列表。此外,我在更改已存在的行时也没有遇到问题。你知道为什么会这样吗?

  • 我正在尝试将数据添加到Firebase Firestore的文档中。我向其中添加了一个名为“用户”的集合。此外,读/写权限目前已打开。我在跟踪这个医生。我无法将数据添加到文档中。 以下是我想做的: 在日志中,我只看到以下内容(无论是失败日志还是成功日志): 当我看到Firebase控制台时,根据应该创建的日志,我找不到ID的文档。 还有一个类似的问题:无法向Cloud FiRecovery添加信息

  • 问题内容: 在我的在线计算机科学课上,我必须编写一个程序来确定太阳系中每个行星的表面重力。除了一个方面,我几乎已经掌握了它的所有方面。我需要使用单独的方法将表面重力写入文件。这是我目前的方法: 我的问题是,当我将其写入文件时,它将覆盖先前的值。我如何获得它包括所有的价值。如果有帮助,这是我的全部代码: 问题答案: 这样做是为了创建带有追加模式的作品:

  • 但是,后来当我试图将整数添加到正确的“内部”数组列表中时,我无法将整数添加到ArrayList类型的位置中。我还得到一个索引超出界限的错误。 解决这个问题的方法是将整数强制转换为ArrayList类型,但这意味着我将在内部数组列表中添加一个数组列表,这不是我想要的。我想在正确的“内部”ArrayList中添加一个int。

  • 我想创建一个包含xml文件的zip文件夹并下载它。我可以下载zip,但它是空的。 我可以创建xml和zip: 顺便说一下,$result是ArrayToXML::CONVERT(array,....) 如何将xml文件添加到ZIP。我刚来拉拉维尔请帮帮我

  • 我在这个论坛上尝试了几种解决方案,但我无法添加要提交的文件。我使用的是,但我的git bash只是冻结了。我已经删除了索引。锁定文件。似乎每次我运行git add-A时都会创建它,但什么也没发生。它只是坐在那里,有一个闪烁的光标。我升级了我的git bash,重新初始化了我的项目,但仍然是相同的问题。我尝试了以下线程和类似线程中的许多解决方案: 另一个git进程似乎正在这个存储库中运行 完全错误: