增加文本区域的高度

时间:2018-12-23 20:59:13

标签: java javafx scenebuilder

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

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

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

How it is

How I want to make it

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

谢谢

1 个答案:

答案 0 :(得分:1)

所以我是这样做的,我不认为这是最干净的方法,但确实可以完成工作,所以如果有人尝试做同样的事情,并且可能对更好的方法有一些建议,我就把它放在这里:

我的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);
    }
}