Увеличить высоту текстовой области - PullRequest
0 голосов
/ 23 декабря 2018

Я использую JFoenix для своих компонентов дизайна, и у меня есть JFXTextArea, который просто действует как обычное TextArea, и я хочу, чтобы он регулировал его высоту, следуя тексту внутри него, когда я печатаю внутри него и когда он заполнен,текст идет к строке, но появляется полоса прокрутки, поэтому я просто хочу, чтобы она шла к строке, но вместо полосы прокрутки я хочу, чтобы TextArea было больше, чтобы соответствовать тексту, возможно ли это?

I 'Я использую SceneBuilder для пользовательского интерфейса, у меня есть Контроллер и файл fxml для компонентов.

Здесь вы можете увидеть экраны, как это и как я хочу, чтобы это было:

Как это

Как я хочу это сделать

Если вы хотите узнать, что такое JFoenix, вы можете посмотреть здесь: http://www.jfoenix.com/

Спасибо

1 Ответ

0 голосов
/ 24 декабря 2018

Итак, я сделал это так, я не думаю, что это самый чистый способ сделать это, но он делает свою работу, поэтому я помещу это здесь, если кто-то еще попытается сделать то же самое и, возможно, посоветуете лучший способ сделать это.это:

Моя TextArea имеет 557 в качестве Y-макета и 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);
    }
}
...