java - 增加文本区域的高度

标签 java javafx scenebuilder

我正在使用 JFoenix 作为我的设计组件,并且我有一个 JFXTextArea,它的作用就像一个普通的 TextArea,我希望它能够在我在其中输入内容以及当它填满时根据其中的文本调整其高度。文本转到该行,但出现了一个滚动条,所以我只想让它转到该行,但我希望 TextArea 更大以适合文本,而不是有滚动条,这可能吗?

我使用 SceneBuilder 作为用户界面,我有一个 Controller 和一个用于组件的 fxml 文件。

在这里您可以看到它的样子以及我想要的样子的屏幕:

How it is

How I want to make it

如果你想知道 JFoenix 是什么,你可以看这里: http://www.jfoenix.com/

谢谢

最佳答案

所以我这样做了,我不认为这是最干净的方法,但它确实有效,所以如果其他人尝试做同样的事情,并且可能有一些关于更好方法的建议,我将其放在这里它:

我的 TextArea 的 Y 布局为 557,默认高度为 35

//This is when you are typing, if the scrollbar go visible when we increase the size of the TextArea
private void msgFieldFull(KeyEvent event)
{   
    ScrollBar scrollBarText = (ScrollBar) this.msgField.lookup(".scroll-bar:vertical");

    if(scrollBarText.isVisible()==true)
    {
        this.msgField.setLayoutY(this.msgField.getLayoutY()-10);
        this.msgField.setPrefHeight(this.msgField.getPrefHeight()+10);
    }

//If he is deleting somethings, the Y value can only be > 557 if the size increased so it won't get lower than 557
    if(event.getCode() == KeyCode.BACK_SPACE && this.msgField.getLayoutY() != 557)
    {

        this.msgField.setLayoutY(this.msgField.getLayoutY()+10);
        this.msgField.setPrefHeight(this.msgField.getPrefHeight()-10);
    }


}

//if he does CTRL+A and delete: default values for Y position and height
@FXML
private void msgFieldEmpty(KeyEvent event)
{
    if(this.msgField.getText().trim().isEmpty())
    {
        this.msgField.setLayoutY(557);
        this.msgField.setPrefHeight(35);
    }
}

关于java - 增加文本区域的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53907116/

相关文章:

java - 通用 BST 不插入所有值并返回 null

java - 如何在 Hibernate 搜索中索引一组 UUID?

java - 访问 Java Web 项目中的动态资源

java - 如何将图表和TableView结合起来输出为图像png格式?

javafx-2 - 设置场景宽度和高度

java - 如何让我的成功消息在出现错误时不显示

javafx - 在 netbeans 中执行时,场景构建器中导入的图像不会显示

java - 使用 JSoup 从 HTML 中提取 <data-id >

java - 如何更改 JavaFX BarChart 中排序方法中条形的位置?

css - 如何将我的背景图像设置为随窗口大小自动调整大小?